python 2.7小写
Posted
技术标签:
【中文标题】python 2.7小写【英文标题】:python 2.7 lowercase 【发布时间】:2012-04-14 03:36:10 【问题描述】:当我在 Python 2.7 中使用 .lower()
时,字符串不会转换为字母 ŠČŽ
的小写字母。
我从字典中读取数据。
我尝试使用str(tt["code"]).lower()
、tt["code"].lower()
。
有什么建议吗?
【问题讨论】:
看看***.com/questions/727507/…,我想应该是有关系的。 【参考方案1】:使用 unicode:
>>> print u'ŠČŽ'.lower().encode('utf8')
ščž
>>>
您需要将文本从外部世界进入您的程序立即转换为 unicode,而不仅仅是在您发现问题时。
因此,要么使用codecs
模块读取解码文本,要么使用'bytestring'.decode('latin2')
(你应该使用任何实际编码来代替latin2)。
【讨论】:
我正在阅读 dict 那么如何将 tt["code"] 转换为 u"ŠČŽ"?我不能使用 ustr(tt["code"]).lower().encode('utf8') 或 str(tt[u"code"]).lower().encode('utf8')【参考方案2】:使用 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
对象创建的。
【讨论】:
我正在阅读 dict 那么如何将 tt["code"] 转换为 u"ŠČŽ"? 使用unicode(tt["code"], 'latin2'),其中'latin2'是使用的编码,所以你可能需要使用不同的。 还要注意unicode.lower()
是依赖于语言环境的。根据运行环境的不同,它可能会给出不同的结果。
@SvenMarnach:确实,它取决于语言环境,但由于语言环境的差异很小,接近于不使用 Unicode 导致的差异 - 因为在这种情况下,lower 和 upper 无论如何都只会理解 ascii
@Yebach :阅读这篇文章,它会对你有很大帮助:joelonsoftware.com/articles/Unicode.html - 然后 - 使用“decode”字符串方法将你的字符串转换为 unicode以上是关于python 2.7小写的主要内容,如果未能解决你的问题,请参考以下文章
centos6默认python2.6升级2.7 卸载python2.6升级2.7