在 Python 2.7、Ubuntu 13.4 中正确使用 unicode?

在 Python 2.7、Ubuntu 13.4 中正确使用 unicode?

在最新的 Ubuntu 中,使用默认的 Python (2.7.4),我无法让 unicode 工作。这是发生的情况:

>>> print('tři')
tři
>>> d = {3:'tři'}
>>> d[3]
't\xc5\x99i'
>>> d = {3:u'tři'}
>>> d[3]
u't\u0159i'

显然,我希望第三行和/或第五行显示与第一行相同。

我尝试摆弄 sys(导入它,重新加载它,然后设置默认编码('utf-8')),但似乎没有帮助。据我所知,其他一切都与 unicode 一起正常工作(它是流行发行版的现代版本)。

答案1

我应该指出,你正在玩自省。Python 2 以它所知道的唯一方式存储 unicode,但它不会破坏数据,交互式控制台会向你展示这一点。它向你展示的是原始字符串。

如果要正确查看输出,请使用print

>>> d = {3:'tři'}
>>> print d[3]
tři

Python 2.x 仍然将 Unicode 视为神奇而可怕的东西。Python 3 将所有字符串视为 unicode。如果可能的话,我可能会建议使用 Python 3。

$ python3
Python 3.3.1 (default, Jul  5 2013, 09:19:20) 
[GCC 4.7.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('tři')
tři
>>> d = {3:'tři'}
>>> d
{3: 'tři'}
>>> d[3]
'tři'

事情并不总是那么简单。Python 3 有一些特殊的向后不兼容性,因此如果您需要某些库(或拥有大量不兼容的代码),这实际上不是一个选择。

相关内容