在 python3 中的字符串和字节之间切换
change between string and bytes in python3
在 python 2.7:
>>> x1= '\xba\xba'
>>> x2=b'\xba\xba'
>>> x1==x2
True
在 python 3.4:
>>> x1='\xba\xba'
>>> x2=b'\xba\xba'
>>> x1==x2
False
>>> type(x1)
<class 'str'>
>>> type(x2)
<class 'bytes'>
- 如何把
x1
变成x2
?
- 如何把
x2
变成x1
?
在 Python 3.x 中,使用带有 latin1 编码(或 iso-8859-1)的 str.encode
(str -> bytes) and bytes.decode
(字节 -> str):
>>> x1 = '\xba\xba'
>>> x2 = b'\xba\xba'
>>> x1.encode('latin1') == x2
True
>>> x2.decode('latin1') == x1
True
x1
和x2
都是Python中的bytestrings 2.如果比较Unicode和bytes在Python2中;在这种情况下,您还会得到 False
:
>>> u'\xba\xba' == b'\xba\xba'
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
False
x1
是 Python 中的 Unicode 字符串 3.
您可以添加 from __future__ import unicode_literals
以使代码在 Python 2 和 3 上工作相同:
>>> from __future__ import unicode_literals
>>> x1 = '\xab\xab'
>>> type(x1)
<type 'unicode'>
不要混合使用字节串和 Unicode 字符串。
要将 Unicode 字符串转换为字节:
bytestring = unicode_string.encode(character_encoding)
将字节转换为 Unicode 字符串:
unicode_string = bytestring.decode(character_encoding)
在 python 2.7:
>>> x1= '\xba\xba'
>>> x2=b'\xba\xba'
>>> x1==x2
True
在 python 3.4:
>>> x1='\xba\xba'
>>> x2=b'\xba\xba'
>>> x1==x2
False
>>> type(x1)
<class 'str'>
>>> type(x2)
<class 'bytes'>
- 如何把
x1
变成x2
? - 如何把
x2
变成x1
?
在 Python 3.x 中,使用带有 latin1 编码(或 iso-8859-1)的 str.encode
(str -> bytes) and bytes.decode
(字节 -> str):
>>> x1 = '\xba\xba'
>>> x2 = b'\xba\xba'
>>> x1.encode('latin1') == x2
True
>>> x2.decode('latin1') == x1
True
x1
和x2
都是Python中的bytestrings 2.如果比较Unicode和bytes在Python2中;在这种情况下,您还会得到 False
:
>>> u'\xba\xba' == b'\xba\xba'
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
False
x1
是 Python 中的 Unicode 字符串 3.
您可以添加 from __future__ import unicode_literals
以使代码在 Python 2 和 3 上工作相同:
>>> from __future__ import unicode_literals
>>> x1 = '\xab\xab'
>>> type(x1)
<type 'unicode'>
不要混合使用字节串和 Unicode 字符串。
要将 Unicode 字符串转换为字节:
bytestring = unicode_string.encode(character_encoding)
将字节转换为 Unicode 字符串:
unicode_string = bytestring.decode(character_encoding)