Zag*_*ags 4 python string bytearray python-2.x python-3.x
将字符串对象与在Python 2和Python 3中都有效的字节对象进行比较的最佳方法是什么?假设两者都是utf8.更一般地说,如何编写Python 2和Python 3兼容的两个对象的比较,每个对象可能是字符串,字节或unicode对象?
问题是"asdf" == b"asdf"Python 2 中为True,Python 3中为False
同时,人们不能盲目地编码或解码对象,因为Python 2中的字符串都有encode和decode方法,但Python 3中的字符串只有编码方法.
最后,isinstance(obj, bytes)对于Python 2中的任何非unicode字符串,返回True,并且仅返回Python 3中的字节对象的True.
在Python 2和Python 3中,任何实例bytes都有一个解码方法.因此,您可以执行以下操作:
def compare(a, b, encoding="utf8"):
if isinstance(a, bytes):
a = a.decode(encoding)
if isinstance(b, bytes):
b = b.decode(encoding)
return a == b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3439 次 |
| 最近记录: |