所以我有一个 python 脚本,为了方便起见,我更喜欢在 python 3.2 和 2.7 上工作。
有没有办法让 unicode 文字同时适用于两者?例如
#coding: utf-8
whatever = 'שלום'
u''
上面的代码在 python 2.x ( ) 和 python 3.x 中需要一个 unicode 字符串,这几乎不会u
导致语法错误。
所以我有一个 python 脚本,为了方便起见,我更喜欢在 python 3.2 和 2.7 上工作。
有没有办法让 unicode 文字同时适用于两者?例如
#coding: utf-8
whatever = 'שלום'
u''
上面的代码在 python 2.x ( ) 和 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