如何从fi读取八位字节字符串

2024-06-28 18:52:13 发布

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

我在一个文件中有一个base64编码的八位字节字符串:

\x7D\x1E\x40\xEE\x62\x12\xE1\x9C\xC9\x28\x63\x95\xB6\x0C\xCB\xF7\xD2\x2F\x6F\xA8\xA1\xF5 \x21\x4E\x7A\x4D\x79\x38\x78\xBF\x1B\x2B\x73\x28\x57\x5C\x8F\xB2\x53\xC0\x4C\x57\x6C\x77 \xCF\x88\xA3\xAA\x7D\x52\xEA\x2F\xCD\xE9\x29\x27\xD9\x0F\xA1\xF4\x12\xDB\xBF\x65\x09\x4C \x29\xE9\xC9\xB5\x0F\x3C\xE5\xEC\x82\xBC\x42\x3C\xBB\xE2\xFF\x7B\x7B\xB1\x32\x3F\x4D\xC5 \x14\x66\x69\x98\x0C\x43\xB1\xE2\x9D\x7F\x63\xEF\xF5\xB1\xEA\xA0\xDC\x58\x8B\x1F\x9E\xE1 \x12\x14\xA3\xD2\x73\x27\x73\xE5\xC8\x2B\xBD\x0A\x0B\xE6\x05\x42\x36\x21

我想用Python来读。但是Python会自动为我跳过反斜杠,因此我得到了以下字符串:

\\x7D\\x1E\\x40\\xEE\\x62\\x12\\xE1\\x9C\\xC9\\x28\\x63\\x95\\xB6\\x0C\\xCB\\xF7\\xD2\\x2F\\x6F\\xA8\\xA1\\xF5\\x21\\x4E\\x7A\\x4D\\x79\\x38\\x78\\xBF\\x1B\\x2B\\x73\\x28\\x57\\x5C\\x8F\\xB2\\x53\\xC0\\x4C\\x57\\x6C\\x77\\xCF\\x88\\xA3\\xAA\\x7D\\x52\\xEA\\x2F\\xCD\\xE9\\x29\\x27\\xD9\\x0F\\xA1\\xF4\\x12\\xDB\\xBF\\x65\\x09\\x4C\\x29\\xE9\\xC9\\xB5\\x0F\\x3C\\xE5\\xEC\\x82\\xBC\\x42\\x3C\\xBB\\xE2\\xFF\\x7B\\x7B\\xB1\\x32\\x3F\\x4D\\xC5\\x14\\x66\\x69\\x98\\x0C\\x43\\xB1\\xE2\\x9D\\x7F\\x63\\xEF\\xF5\\xB1\\xEA\\xA0\\xDC\\x58\\x8B\\x1F\\x9E\\xE1\\x12\\x14\\xA3\\xD2\\x73\\x27\\x73\\xE5\\xC8\\x2B\\xBD\\x0A\\x0B\\xE6\\x05\\x42\\x36\\x21

还有。。。在

>>> repr(sig_bytes)
"'\\\\x7D\\\\x1E\\\\x40\\\\xEE\\\\x62\\\\x12...'"
>>> sig_bytes.replace("\\x","\x")
ValueError: invalid \x escape

我该怎么办?在


Tags: x12xb1xa1x0cx73xf5xe1x2f
1条回答
网友
1楼 · 发布于 2024-06-28 18:52:13

您可能会看到您的字符串的repr()版本显示在某个地方,这并不意味着您的字符串加载错误:

>>> s = "\x7D\x1E\x40\xEE"
>>> s
'}\x1e@\xee'
>>> repr(s)
"'}\\x1e@\\xee'"

编辑:

如果您的字符串已经是双转义的并且您想删除它们,请使用replace,并且不要忘记在参数中转义\

^{pr2}$

编辑2:

OP以某种方式将repr字符串加载到它的string变量中,而不是正确的字符串数据。在

^{3}$

让我们重新解释成OP从一开始就应该加载的正确形式。为此,我们将构造一个完整的字符串repr,方法是用引号将其括起来,然后要求ast模块literal_eval它:

import ast
s = "\\x7D\\x1E\\x40\\xEE"
s = '"'+s+'"'
s = ast.literal_eval(s)
>>> s
'}\x1e@\xee'

相关问题 更多 >