在python 3中我写
s = '\u0300'
我得到一个unicode字符,但这在python2中不起作用,我得到一串不同的字符。
python2似乎想要:
s = u'\u0300'
所以我必须检查sys.version_info
以便知道我是否正在运行python 2或3并相应地使用前者或后者。
有没有办法以两种版本的方式编写作业?
答案 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文化通常倾向于明确的过度隐含。