38

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

有没有办法让 unicode 文字同时适用于两者?例如

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

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

4

2 回答 2

27

编辑 - 从 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
于 2011-07-09T05:49:02.577 回答
0

在 3.0、3.1 和 3.2 中:

from __future__ import unicode_literals

来源ubershmekel,在问题中。原文见第 4 版

于 2019-06-04T14:35:57.240 回答