python3 str和bytes互转
介绍
在Python中,字符串(str)和字节(bytes)是两种常见的数据类型。在处理文本、网络通信、文件读写等场景中,我们经常需要在字符串和字节之间进行转换。本文将详细介绍Python3中str和bytes之间的互相转换方法。
字符串(str)
字符串是Python中表示文本的数据类型,用一对单引号、双引号或三引号括起来。例如:
s = 'Hello, World!'
字符串在Python中是不可变的,即不能像列表一样通过索引来修改其中的某个字符。但是可以通过切片操作来获取字符串的一部分。例如:
s = 'Hello, World!'
print(s[0]) # 输出:H
print(s[7:]) # 输出:World!
字节(bytes)
字节是Python中表示二进制数据的数据类型,用一对单引号、双引号或三引号括起来,并在前面加上小写字母’b’。例如:
b = b'Hello, World!'
字节与字符串的主要区别在于,字节是可变的。可以通过索引和切片操作进行修改。例如:
b = bytearray(b'Hello, World!')
b[0] = 72 # 修改第一个字节为ASCII码对应的值
print(b) # 输出:bytearray(b'Hello, World!')
str到bytes的转换
在Python中,字符串可以通过encode()方法转换为字节,可以指定不同的编码方式。常用的编码方式有utf-8、gbk等。例如:
s = 'Hello, 世界!'
b = s.encode('utf-8')
print(b) # 输出:b'Hello, \xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
上述代码中,使用utf-8编码方式将字符串s转换为字节b。输出中的\xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81
是utf-8编码后的字节表示。
bytes到str的转换
在Python中,字节可以通过decode()方法转换为字符串,需要指定相应的编码方式。例如:
b = b'Hello, \xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
s = b.decode('utf-8')
print(s) # 输出:Hello, 世界!
上述代码中,使用utf-8编码方式将字节b转换为字符串s。输出为字符串 Hello, 世界!
示例和运行结果
下面是一个完整的示例代码,演示了如何进行str和bytes之间的转换:
s = 'Hello, 世界!'
b = s.encode('utf-8')
print(b) # 输出:b'Hello, \xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
b = b'Hello, \xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
s = b.decode('utf-8')
print(s) # 输出:Hello, 世界!
总结
本文详细介绍了Python3中str和bytes之间的互相转换方法。可以通过encode()方法将字符串转换为字节,也可以通过decode()方法将字节转换为字符串。在实际项目中,需要根据具体的需求和编码方式来进行选择和转换。