当我在Python 2.7中使用.lower()
时,字符ŠČŽ
不会将字符串转换为小写。
我从字典中读取数据。
我尝试使用str(tt["code"]).lower()
,tt["code"].lower()
。
有什么建议吗?
答案 0 :(得分:25)
使用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
对象。
答案 1 :(得分:4)
使用unicode:
>>> print u'ŠČŽ'.lower().encode('utf8')
ščž
>>>
您需要在从外部世界进入程序时将文本转换为unicode ,而不仅仅是在您发现问题的位置。
因此,要么使用codecs
模块来读取已解码的文本,要么使用'bytestring'.decode('latin2')
(代替latin2,你应该使用实际的编码)。