将二进制字符串的文本转储转换为真实字符串
Convert text dump of a binary string into real string
A python 库输出文本转储二进制 utf-8 字符串,如下所示:
In [1]: string
Out[1]: "b'\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5'"
In [2]: type(string)
Out[2]: str
我需要从中恢复真正的字符串,就像它们是真正的二进制字符串一样:
In [91]: string_b
Out[91]: b'\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5'
In [92]: type(string_b)
Out[92]: bytes
In [93]: string_b.decode('UTF-8')
Out[93]: 'Предисловие'
我该怎么做?
使用 ast.literaleval
读取字符串,就好像它位于 python 代码:
import ast
res = ast.literal_eval("b'\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5'")
res
b'\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5'
res.decode("UTF-8")
'Предисловие'
如果您有一个包含二进制字符串 repr
的字符串,您可以使用 ast.literal_eval
返回。
A python 库输出文本转储二进制 utf-8 字符串,如下所示:
In [1]: string
Out[1]: "b'\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5'"
In [2]: type(string)
Out[2]: str
我需要从中恢复真正的字符串,就像它们是真正的二进制字符串一样:
In [91]: string_b
Out[91]: b'\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5'
In [92]: type(string_b)
Out[92]: bytes
In [93]: string_b.decode('UTF-8')
Out[93]: 'Предисловие'
我该怎么做?
使用 ast.literaleval
读取字符串,就好像它位于 python 代码:
import ast
res = ast.literal_eval("b'\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5'")
res
b'\xd0\x9f\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xb5'
res.decode("UTF-8")
'Предисловие'
如果您有一个包含二进制字符串 repr
的字符串,您可以使用 ast.literal_eval
返回。