所以我有一个python脚本,我更喜欢在python 3.2和2.7上使用它只是为了方便。
有没有办法让unicode文字在两者中都有效? E.g。
#coding: utf-8
whatever = 'שלום'
上面的代码需要python 2.x(u'')中的unicode字符串和python 3.x中的小'u'导致语法错误。
无论如何我找到了答案,我所需要的只是:
from __future__ import unicode_literals
,我仍在发帖
对于好奇,这就是我正在做的事情:http://code.google.com/p/pytitle/
答案 0 :(得分:26)
编辑 - 自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
答案 1 :(得分:0)