如何使Python字符串与它们所使用的Python版本无关?在
我试图维护可以与Python2.7和Python3.*一起工作的代码,但我遇到了很多违反直觉的错误。例如,这在Python 2.7中非常适用:
print('Job: %s' % job)
但是在Python 3.3中失败了,错误是:
^{pr2}$如果我把那行改成:
print(('Job: %s' % job).encode('utf-8'))
这在Python3.3中修复了它……但是这破坏了Python2.7,现在它抛出了完全相同的错误。在
尝试在Python中管理字符串感觉就像在玩“打鼹鼠”。如何对字符串进行可靠的编码,使它们在所有版本的Python中都能正常工作?在
这在Python2.7和3.3+中都可以使用:
如果它仍然失败,那么你的问题就存在于其他地方。不知何故,}魔术。在
job
已经被编码了,您需要正确地定义__str__
和{解决方案将取决于您要针对哪个精确的Python版本,但是如果2.7足够向后兼容,您可以
这在Python3(至少3.2+)中是不可操作的,并且可以实现Python2.7中的预期。在
^{pr2}$请参见http://python-future.org/unicode_literals.html上的注意事项,它指出“未来”并不真正涵盖3.0-3.2。因此,这个特殊的东西似乎也像我在3.1中所期望的那样工作。在
six
库是为以下内容而构建的:相关问题 更多 >
编程相关推荐