如何将二进制字符串的字符串表示形式从文本文件转换回它来自的 utf 8 编码文本?
How to convert the string representation of a binary string froma text file back into the utf8 encoded text it came from?
我有一个俄语单词:“привет”。
它被编码成 utf-8 字节使用
'привет'.encode('utf-8')
结果是 python 字节对象,表示为:
b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
现在我将它保存在一个文件中,当我读取该文件时,我得到了这个字符串:
"b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'"
如何将此字符串解码为原始单词?
这不是我要解码的字节对象,而是一个字符串,所以
"b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'".decode('utf-8')
returns AttributeError: 'str' object has no attribute 'decode'
我将其保存到文件的方法是调用 logger.info(x.encode('utf-8'))
,即
import logging
logger = logging.getLogger('GENERATOR_DYNAMICS')
我读取文件的方式是
with open('file.log') as f:
logs = f.readlines()
你的问题有两个:
- 你得到了字节数组的字符串表示(来自一个文件,但那有点不相关)
- 您想将字节数组恢复为 utf8 文本
所以解决方法也是两步:
import ast
# convert string representation back into binary
string_rep = "b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'"
as_binary = ast.literal_eval(string_rep)
# convert binary to utf8
text = as_binary.decode("utf8")
再次获得'привет'
。
最后一部分是
的副本
我有一个俄语单词:“привет”。
它被编码成 utf-8 字节使用
'привет'.encode('utf-8')
结果是 python 字节对象,表示为:
b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
现在我将它保存在一个文件中,当我读取该文件时,我得到了这个字符串:
"b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'"
如何将此字符串解码为原始单词?
这不是我要解码的字节对象,而是一个字符串,所以
"b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'".decode('utf-8')
returns AttributeError: 'str' object has no attribute 'decode'
我将其保存到文件的方法是调用 logger.info(x.encode('utf-8'))
,即
import logging
logger = logging.getLogger('GENERATOR_DYNAMICS')
我读取文件的方式是
with open('file.log') as f:
logs = f.readlines()
你的问题有两个:
- 你得到了字节数组的字符串表示(来自一个文件,但那有点不相关)
- 您想将字节数组恢复为 utf8 文本
所以解决方法也是两步:
import ast
# convert string representation back into binary
string_rep = "b'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'"
as_binary = ast.literal_eval(string_rep)
# convert binary to utf8
text = as_binary.decode("utf8")
再次获得'привет'
。
最后一部分是