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小写的主要内容,如果未能解决你的问题,请参考以下文章

python 串口

python

Python版本2.7切3.5和3.5切2.7

centos6默认python2.6升级2.7 卸载python2.6升级2.7

在 CentOS 上升级到 python 2.7 后如何为 2.7 版本安装 python-devel

由于系统 Python 2.7 的要求,Pygame 安装失败,即使我有 Python 2.7