所以我有像下面这样的二进制文件b"My name is ...\n blah blah"然后我使用str()它导致"b'My name is ...\\n blah blah'"我如何撤消它并再次获得具有字节文字的变量?
b"My name is ...\n blah blah"
str()
"b'My name is ...\\n blah blah'"
要将包含字节文字的字符串 b"My name is ...\n blah blah" 转换回其原始的字节表示,可以使用 Python 的 bytes 类型。具体来说,您可以直接使用 bytes() 函数或者直接在字符串前面加上 b 前缀来获得字节对象。
bytes
bytes()
b
# 原始字节对象 original_bytes = b"My name is ...\n blah blah" # 使用 str() 转换为字符串 string_repr = str(original_bytes) # 打印字符串表示 print(string_repr) # 输出:b'My name is ...\\n blah blah' # 如果想要从字符串表示恢复到字节对象 # 1. 通过 eval() recovered_bytes = eval(string_repr) # 2. 直接从字符串构造字节对象(如果您知道格式) recovered_bytes_direct = bytes(string_repr[2:-1], 'utf-8').replace(b'\\n', b'\n') # 打印恢复的字节对象 print(recovered_bytes) # 输出:b'My name is ...\n blah blah' print(recovered_bytes_direct) # 输出:b'My name is ...\n blah blah' # 验证两者是否相等 print(recovered_bytes == original_bytes) # 输出:True print(recovered_bytes_direct == original_bytes) # 输出:True
eval()
但是请注意,eval() 可能有安全隐患,如果您不确定字符串的来源,使用时请小心。
直接构造字节对象:
b'
''
replace()
\\n
b'\n'
这两种方法都可以将字节字符串的表示转换回字节对象,您可以根据具体情况选择使用。