将字节数据的python字符串转换为字节

2024-06-16 15:07:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python字节字符串数据。示例字符串如下所示:

string = "b'\xabVJ-K\xcd+Q\xb2R*.M*N.\xcaLJU\xd2QJ\xceH\xcc\xcbK\xcd\x01\x89\x16\xe4\x97\xe8\x97d&g\xa7\x16Y\x85\x06\xbb8\xeb\x02\t\xa5Z\x00'"

它是一个字符串,不是bytes。我想把它转换成字节。正常方法(如encode)产生以下结果:

b'\\xabVJ-K\\xcd+Q\\xb2R*.M*N.\\xcaLJU\\xd2QJ\\xceH\\xcc\\xcbK\\xcd\\x01\\x89\\x16\\xe4\\x97\\xe8\\x97d&g\\xa7\\x16Y\\x85\\x06\\xbb8\\xeb\\x02\\t\\xa5Z\\x00'

这会导致问题(请注意添加了所有额外的斜杠)

我已经浏览了这个问题的10多个潜在答案,其中只有一个有效,我不想使用这个解决方案,原因很明显:

this_works = eval(string)

有没有办法不用评估就能让它工作?我尝试过的其他可能的解决方案失败了:

Option 1Option 2Option 3


Tags: 字符串string字节optionx01xcdxccx89
1条回答
网友
1楼 · 发布于 2024-06-16 15:07:28

我假设在变量s中有类似python的字符串表示:

s = r"b'\xabVJ-K\xcd+Q\xb2R*.M*N.\xcaLJU\xd2QJ\xceH\xcc\xcbK\xcd\x01\x89\x16\xe4\x97\xe8\x97d&g\xa7\x16Y\x85\x06\xbb8\xeb\x02\t\xa5Z\x00'"

是的,如果您评估这个,那么您就得到了真正的python bytes对象。 但您可以尝试使用ast模块解析它:

import ast
s = r"b'\xabVJ-K\xcd+Q\xb2R*.M*N.\xcaLJU\xd2QJ\xceH\xcc\xcbK\xcd\x01\x89\x16\xe4\x97\xe8\x97d&g\xa7\x16Y\x85\x06\xbb8\xeb\x02\t\xa5Z\x00'"
tree = ast.parse(s)
value = tree.body[0].value.value
print(type(value), value)

这将输出bytes对象:

<class 'bytes'> b'\xabVJ-K\xcd+Q\xb2R*.M*N.\xcaLJU\xd2QJ\xceH\xcc\xcbK\xcd\x01\x89\x16\xe4\x97\xe8\x97d&g\xa7\x16Y\x85\x06\xbb8\xeb\x02\t\xa5Z\x00'

相关问题 更多 >