如何将B字符串(bytes字面量形式)转换为实际bytes类型?
Python字符串转bytes类型实现方案
你手里的bstr是Python bytes字面量的字符串格式化结果,要转成和bbytes完全一致的类型和值,有两种常用实现方式:
方法1:使用ast.literal_eval(推荐,安全)
该方法只会解析Python字面量,不会执行任意代码,是处理这类场景的首选方案。
import ast bstr = "b'\\xe4\\xb8\\x96\\xe7\\x95\\x8c'" bbytes = ast.literal_eval(bstr) # 验证结果 print(bbytes) # 输出:b'\xe4\xb8\x96\xe7\x95\x8c' print(type(bbytes)) # 输出:<class 'bytes'> print(bbytes == b'\xe4\xb8\x96\xe7\x95\x8c') # 输出:True
方法2:手动字符串处理+编码转换
不需要引入额外模块,适合简单场景下使用:
bstr = "b'\\xe4\\xb8\\x96\\xe7\\x95\\x8c'" # 去除首尾的b'和'标识 raw_str = bstr.strip("b'") # 解析转义序列后转换为原始bytes bbytes = raw_str.encode('utf-8').decode('unicode-escape').encode('latin1') # 验证结果 print(bbytes) # 输出:b'\xe4\xb8\x96\xe7\x95\x8c' print(type(bbytes)) # 输出:<class 'bytes'> print(bbytes == b'\xe4\xb8\x96\xe7\x95\x8c') # 输出:True
注意:如果你的
bstr里的bytes字面量本身包含单引号,手动处理的方法会出错,优先使用ast.literal_eval方案。
内容的提问来源于stack exchange,提问作者lgsd123456
相关产品推荐
相关产品推荐

