Python,неправильно считает символы в строке

Модератор: Модераторы разделов

a_sergeevich
Сообщения: 95
ОС: Mandriva 2007 PowerPack

Python,неправильно считает символы в строке

Сообщение a_sergeevich »

Вот есть такой код:

a=['кот','окно','выбросить']
for x in a:
print x,len(x)

выдает следующий результат:

кот 6
окно 8
выбросить 18

Дистр Mandriva 2007 PP. Версия Python 2.4.3.

В 2006 всё нормально.

И ещё просто хочу узнать мнение стоит ли переходить с Java на Python почему спрашиваю, просто Python подкупает
простотой своего синтаксиса,но не нравится мне в нем ООП.Скажите просто в чем его плюсы кроме вышеуказанного,а то в последнее время много говорят,что крутой язык.Просто инет очень ограниченный и немогу сильно искать разную информацию.Благодарю заранее за хорошие содержательные ответы.
Спасибо сказали:
mops
Сообщения: 172
ОС: Ubuntu Feisty

Re: Python,неправильно считает символы в строке

Сообщение mops »

А вывод интерпретатора вида

Код: Выделить всё

sys:1: DeprecationWarning: Non-ASCII character '\xd0' in file  on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
вас не смущает? ;)

По поводу языка - он просто красивый...
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux

Re: Python,неправильно считает символы в строке

Сообщение Skull »

a_sergeevich писал(а):
02.02.2007 17:28
Дистр Mandriva 2007 PP. Версия Python 2.4.3.
В 2006 всё нормально.
Потому как в 2006 была локаль KOI8-R по умолчанию, а в 2007 - UTF-8 (где все русские буквы кодируются двумя байтами).

Поэтому пишите так:

Код: Выделить всё

>>> k=u"кот"
>>> k
u'\u043a\u043e\u0442'
>>> len(k)
3
Skull
Спасибо сказали:
a_sergeevich
Сообщения: 95
ОС: Mandriva 2007 PowerPack

Re: Python,неправильно считает символы в строке

Сообщение a_sergeevich »

Skull писал(а):
02.02.2007 17:47
a_sergeevich писал(а):
02.02.2007 17:28

Дистр Mandriva 2007 PP. Версия Python 2.4.3.
В 2006 всё нормально.
Потому как в 2006 была локаль KOI8-R по умолчанию, а в 2007 - UTF-8 (где все русские буквы кодируются двумя байтами).

Поэтому пишите так:

Код: Выделить всё

>>> k=u"кот"
>>> k
u'\u043a\u043e\u0442'
>>> len(k)
3



Спасибо.
Всё понял.
В принципе догадывался, но решил на всякий случай спросить, а то мало-ли.
Замахала если честно эта свистопляска с кодировками.
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Python,неправильно считает символы в строке

Сообщение Liksys »

На всякий случай, буава u перед строкой означает, что это строка unicode. Еще для пущего эффекта можно указывать вторым комментарием после ши-бэнга (#!...) коммент # -*- conding: utf-8 -*-, она установит кодировку в юникод.

Про Питон. Это очень простой, краткий и мощный язык. У него есть конечно некоторые особенности, но ели их понять, все становится просто. ООП так же довольно простое. Имхо, язык - самое то для кросплатформенных программ. Вот непример пишу я графическую программу с использованием Qt4 в Линуксе, копирую в венду, все работает :)
Спасибо сказали:
Аватара пользователя
Eaglevil
Сообщения: 60
ОС: Arch Linux

Re: Python,неправильно считает символы в строке

Сообщение Eaglevil »

(Liksys) писал(а):Это очень простой, краткий и мощный язык. У него есть конечно некоторые особенности, но ели их понять, все становится просто. ООП так же довольно простое. Имхо, язык - самое то для кросплатформенных программ.
ИМХО, почти тоже самое можно сказать о Java. ;)
Здесь могла быть ваша реклама
Спасибо сказали:
a_sergeevich
Сообщения: 95
ОС: Mandriva 2007 PowerPack

Re: Python,неправильно считает символы в строке

Сообщение a_sergeevich »

Вот в этом то вся и проблема.
В Java мне нравится как ООП организовано потомучто он 100% ООЯ,и ещё хоть опыта
в программировании у меня малова то,но с проблемой кодировок в Java не сталкивался,но есть у Java и минусы это например,работа с файлами лупануться можно ( в смысле чтение,запись)по сравнению с питоном где чтение запись в двух строчках кода организовывается.В Java хорошая графика для GUI довольно простая в освоении и симпотная не сравнить с Tkinter . Вообще взять ОО модель и библиотеки GUI от Java ,и все остальное от питона да все это соеденить в один язык и сделать его компилируемым,и оставить возможность работы и в интерпретаторе то по-моему этот язык порвал бы по своей красоте и простоте и мощи все имеющиеся . :cool:
Только прошу все вышесказанное считать чисто мнением не более.

[

Liksys писал(а):
02.02.2007 23:12
На всякий случай, буава u перед строкой означает, что это строка unicode. Еще для пущего эффекта можно указывать вторым комментарием после ши-бэнга (#!...) коммент # -*- conding: utf-8 -*-, она установит кодировку в юникод.

Про Питон. Это очень простой, краткий и мощный язык. У него есть конечно некоторые особенности, но ели их понять, все становится просто. ООП так же довольно простое. Имхо, язык - самое то для кросплатформенных программ. Вот непример пишу я графическую программу с использованием Qt4 в Линуксе, копирую в венду, все работает :)



Кстати ты мог бы подсказать где можно глянуть описание на русском таких штук как PyQt и PyGTK, а то честно Tkinter вымораживает просто своим видом.Английский к сожалению не знаю на таком уровне,чтобы читать литературу. :(
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Python,неправильно считает символы в строке

Сообщение Liksys »

Я как раз программированием на Python+PyQt(3/4) в последнее время и занимаюсь, кроме С.
PyQt ~ Qt, Виджеты одни и те же, методы работы - тоже. Берешь ту же "Qt3: программирование GUI на С++", читаешь, а потом переносишь на Питон, единственное, что не надо заморачиваться с типами и не забывать приписывать в классах self. Вот пример на PyQt3:

Код: Выделить всё

#!/usr/bin/python
from qt import *
import sys

app = QApplication(sys.argv)
button = QPushButton("Exit", None)
QObject.connect(button, SIGNAL("clicked()"), sys.exit)
button.show()
app.setMainWidget(button)
app.exec_loop()

И на PyQt4:

Код: Выделить всё

#!/usr/bin/python
from PyQt4 import Qt
import sys

app = Qt.QApplication(sys.argv)
button = Qt.QPushButton("Exit", None)
Qt.QObject.connect(button, Qt.SIGNAL("clicked()"), sys.exit)
button.show()
app.exec_()

Остальное по аналогии. Если будут с Python/PyQt проблемы - пиши, помогу.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Python,неправильно считает символы в строке

Сообщение elide »

В Java мне нравится как ООП организовано потому что он 100% ООЯ

с каких это пор язык с наличием примитивных типов считается 100% ОО ?
слава роботам!
Спасибо сказали: