所以我有一个python脚本,为了方便起见,我更喜欢在python 3.2和2.7上工作。

有没有办法使Unicode文字在这两种方式中都能起作用?例如。

#coding: utf-8
whatever = 'שלום'

上面的代码在python 2.x(u'')和python 3.x中需要一个unicode字符串,因为很少u会导致语法错误。

最佳答案

编辑-从Python 3.3开始,u''文字再次起作用,因此不需要u()函数。

最好的选择是创建一个方法,该方法可以从Python 2中的字符串对象创建unicode对象,但是将字符串对象留在Python 3中(因为它们已经是unicode)了。

import sys
if sys.version < '3':
    import codecs
    def u(x):
        return codecs.unicode_escape_decode(x)[0]
else:
    def u(x):
        return x

然后,您将使用它,如下所示:
>>> print(u('\u00dcnic\u00f6de'))
Ünicöde
>>> print(u('\xdcnic\N{Latin Small Letter O with diaeresis}de'))
Ünicöde

10-07 13:03
查看更多