所以我有一个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