Kiedy używam .lower()
w Pythonie 2.7, ciąg nie jest konwertowany na małe litery dla liter ŠČŽ
. Czytam dane ze słownika.python 2.7 małe litery
Próbowałem używać str(tt["code"]).lower()
, tt["code"].lower()
.
Wszelkie sugestie?
Kiedy używam .lower()
w Pythonie 2.7, ciąg nie jest konwertowany na małe litery dla liter ŠČŽ
. Czytam dane ze słownika.python 2.7 małe litery
Próbowałem używać str(tt["code"]).lower()
, tt["code"].lower()
.
Wszelkie sugestie?
używać Unicode ciągi:
[email protected]:~$ 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()
ščž
Zobacz ten mały u
? Oznacza to, że został utworzony jako obiekt, a nie obiekt str
.
używać Unicode:
>>> print u'ŠČŽ'.lower().encode('utf8')
ščž
>>>
Trzeba przekonwertować tekst Unicode jak tylko wejdzie on swój program od świata zewnętrznego, a nie tylko w momencie, w którym można zauważyć problem.
Odpowiednio, albo użyj modułu codecs
do odczytu w zdekodowanym tekście, albo użyj 'bytestring'.decode('latin2')
(gdzie zamiast łacińskiego 2 powinieneś użyć cokolwiek, co jest faktycznym kodowaniem).
Spójrz na http://stackoverflow.com/questions/727507/how-can-i-do-unicode-uppercase, myślę, że to jest prawdopodobnie powiązane. – mgilson