兼容python2和python3的python文字

时间:2018-05-01 09:46:27

标签: python

在python 3中我写

s = '\u0300'

我得到一个unicode字符,但这在python2中不起作用,我得到一串不同的字符。

python2似乎想要:

s = u'\u0300'

所以我必须检查sys.version_info以便知道我是否正在运行python 2或3并相应地使用前者或后者。

有没有办法以两种版本的方式编写作业?

2 个答案:

答案 0 :(得分:1)

Python 3(从3.3 IIRC开始)支持u''字符串文字。或者你可以使用

from __future__ import unicode_literals

在Python 2中获取与Python3兼容的字符串文字。此语句在Python 3中是无操作的。

答案 1 :(得分:1)

最兼容的方法是使用six模块或类似的兼容性垫片:

import six

s = six.u('\u0300')

six可在PyPI上使用,并且使用极为广泛且经过充分测试。

另一种选择是:

from __future__ import unicode_literals 

s = '\u0300'

但是,这可能与许多Python 2的期望相冲突,即字符串项可以包含字节。在unicode_literals打开的情况下,字符串文字将以静默方式,几乎神奇地升级为Unicode字符串。 Python文化通常倾向于明确的过度隐含。