Python 2.7 строчные - PullRequest
       32

Python 2.7 строчные

20 голосов
/ 30 марта 2012

Когда я использую .lower() в Python 2.7, строка не преобразуется в строчные буквы ŠČŽ. Я читаю данные из словаря.

Я пытался использовать str(tt["code"]).lower(), tt["code"].lower().

Есть предложения?

Ответы [ 2 ]

25 голосов
/ 30 марта 2012

Используйте строки Unicode:

drostie@signy:~$ python
Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "ŠČŽ"
ŠČŽ
>>> print "ŠČŽ".lower()
ŠČŽ
>>> print u"ŠČŽ".lower()
ščž

Видите, что мало u?Это означает, что он создается как unicode объект, а не str объект.

4 голосов
/ 30 марта 2012

Использовать Unicode:

>>> print u'ŠČŽ'.lower().encode('utf8')
ščž
>>>

Вам нужно преобразовать текст в Unicode , как только он войдет в вашу программу из внешнего мира, а не просто в тот момент, когда выобратите внимание на проблему.

Соответственно, либо используйте модуль codecs для чтения в декодированном тексте, либо используйте 'bytestring'.decode('latin2') (где вместо латиницы 2 следует использовать любую фактическую кодировку).

...