22

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

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

助言がありますか ?

4

2 に答える 2

29

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ます。

于 2012-03-30T12:45:36.317 に答える
4

ユニコードを使用:

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

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

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

于 2012-03-30T12:45:08.750 に答える