Skip to main content
 首页 » 编程设计

python之如何使 Python 字符串版本不可知

2025年05月04日49JustinYoung

如何使 Python 字符串与它们使用的 Python 版本无关?

我正在尝试维护适用于 Python 2.7 和 Python 3.* 的代码,但我遇到了很多违反直觉的错误。例如,这在 Python 2.7 中完美运行:

print('Job: %s' % job) 

但它在 Python 3.3 中失败并出现错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 27: ordinal not in range(128) 

如果我将该行更改为:

print(('Job: %s' % job).encode('utf-8')) 

在 Python 3.3 中修复了它...但是破坏了 Python 2.7,它现在​​抛出完全相同的错误。

尝试在 Python 中管理字符串感觉就像玩打地鼠游戏。您如何可靠地对字符串进行编码,以便它们适用于所有版本的 Python?

请您参考如下方法:

这应该适用于 Python 2.7 和 3.3+ :

print(u'Job: {}'.format(job)) 

如果仍然失败,那么您的问题存在于其他地方。 job 已经被编码,您需要正确定义 __str__ 和 __unicode__ 魔法。