Python3.4将字节文本字符串转换为字节obj

2024-05-12 14:40:16 发布

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

这与使用UTF-8解码无关。这是关于将bytes对象作为文本读取并需要它作为bytes对象,而无需重新创建解析过程。如果我的问题有答案的话,那就是隐藏在很多关于解码问题的答案后面。在

我需要的是:

x = "bytearray(b'abc\xd8\xa2\xd8\xa8\xd8\xa7xyz')"
y = ???(x, ???)
z = bytearray(b'abc\xd8\xa2\xd8\xa8\xd8\xa7xyz')
if y == z:
   print ("Yes!")

对于如何替换这些问号有什么建议吗?在

谢谢!在

^{pr2}$

Tags: 对象答案文本ifbytes过程解码utf
1条回答
网友
1楼 · 发布于 2024-05-12 14:40:16

一种方法是从x(bytearray(b''))中删除所有的混乱,然后我们只需将每个字符转换为它的字节表示,并将其包装成bytearray对象。在

x = "bytearray(b'abc\xd8\xa2\xd8\xa8\xd8\xa7xyz')"
y = bytes(ord(c) for c in x[12:-2])

下面的第二种方法不会局限于bytearray,您应该小心使用它来防止注入,但是如果您确定内容的格式正确,可以使用以下方法:

^{pr2}$

这里您需要在x前面加上r"...",以防止反斜杠立即将unicode序列插入x中。因此,可能无法将此用于动态内容,例如来自标准输入或从文件读取的字符串。在

您也可以按照kindall的建议使用ast.literal_eval(x[10:-1])。在

相关问题 更多 >