在Python 3和2中工作的Unicode文字

所以我有一个Python脚本,我只是为了方便起见而使用python 3.2和2.7。

有没有一种方法可以让Unicode字符在这两个工作? 例如

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

上面的代码需要在python 2.x(u“)和python 3.x中使用一个unicodestring,这个”u“会导致语法错误。

无论如何,我find了答案,我需要的只是:

 from __future__ import unicode_literals 

我仍然发布这个问题,因为https://meta.stackexchange.com/questions/49922/should-i-continue-adding-a-question-if-i-have-found-the-answer-myself

对于好奇,这是我正在工作: http : //code.google.com/p/pytitle/

编辑 – 自Python 3.3以来, u''文字再次工作,所以u()函数是不需要的。

最好的select是在Python 2中创build一个从string对象创buildunicode对象的方法,但将string对象留在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