如何将二进制字符串的字符串表示形式从文本文件转换回它来自的utf8编码文本?

2024-09-25 12:28:28 发布

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

我有一个俄语单词:“Пцццц”。 它被编码成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'"

如何将此字符串解码为原始单词

我要解码的不是bytes对象,而是字符串,所以

"b'\\xd0\\xbf\\xd1\\x80\\xd0\\xb8\\xd0\\xb2\\xd0\\xb5\\xd1\\x82'".decode('utf-8') 

返回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()

Tags: 文件对象字符串字节单词utfencodex82
1条回答
网友
1楼 · 发布于 2024-09-25 12:28:28

你的问题有两方面:

  • 您获得了bytearray的stringrepresentation(来自文件,但这有点不相关)
  • 您希望将bytearray恢复为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")
 

再次获取'привет'

最后一部分是Python3: Decode UTF-8 bytes converted as string的副本

相关问题 更多 >