我有一个在 Python 2.7 和 3.2+ 中运行的代码库。但是文档 rst 文件中的 doctests 让我很头疼。当我在 Python2 中运行它们时,我得到 UnicodeEncodeError: 'ascii' codec can't encode character u'\xb2' in position 16: ordinal not in range(128)
。如果我添加
.. testsetup:: *
from __future__ import unicode_literals
然后我得到很多错误,比如
Expected:
'something'
Got:
u'something'
有没有办法让 doctest 在 Python 2.7 和 3.2+ 中保持不变的第一个文件中包含 unicode 字符?
最佳答案
确保您使用的是 Python 3.3。它添加了明确的 u'unicode literals'
—— 即再次使用 u
前缀 —— 以简化带有 unicode 文字的 Python 2 和 Python 3 之间的转换。参见 http://docs.python.org/3/whatsnew/3.3.html#pep-414-explicit-unicode-literals
关于Python doctests 和 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17439062/