web-dev-qa-db-ja.com

python 2.7小文字

Python 2.7で.lower()を使用すると、文字列が小文字の_ŠČŽ_で小文字に変換されません。辞書からデータを読み取ります。

str(tt["code"]).lower()tt["code"].lower()を使ってみました。

助言がありますか ?

21
Yebach

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オブジェクトとして作成されます。

26
CR Drost

ユニコードを使用:

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

テキストをUnicodeに変換する必要がありますプログラムに入るとすぐに問題に気づいた時点ではなく、外界から==。

したがって、codecsモジュールを使用して、デコードされたテキストを読み取るか、'bytestring'.decode('latin2')を使用します(latin2の代わりに、実際のエンコードが何であれ使用する必要があります)。

4
Marcin