You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何解码从文本文件导入的UTF-8编码字符串?

解决UTF-8转义字符串解码问题

核心问题

你碰到的AttributeError是因为Python 3里字符串(str)本身就是Unicode编码,只有字节串(bytes)才有decode方法。你从文本文件读到的是包含十六进制转义序列的字符串,不是原始字节,得先把这些转义序列转换成字节串,再解码。

可行解决方案

方法1:用codecs模块处理转义

codecs.escape_decode可以直接把带\xXX转义的字符串转换成字节串,再用UTF-8解码:

import codecs

# 从文本文件读取的字符串
text_from_file = r"\x6d\xc3\xbc\x6c\x6c\x65\x72\x20\x69\x73\x74\x20\x63\x6f\x6f\x6c\x21"
# 转换转义序列为字节串
bytes_data, _ = codecs.escape_decode(text_from_file.encode('utf-8'), 'hex-escape')
# UTF-8解码得到最终文本
result = bytes_data.decode('utf-8')
print(result)  # 输出:müller is cool!

方法2:手动解析转义序列

如果不想依赖库,可以手动拆分转义序列并转换:

text_from_file = r"\x6d\xc3\xbc\x6c\x6c\x65\x72\x20\x69\x73\x74\x20\x63\x6f\x6f\x6c\x21"
# 拆分所有\x开头的转义片段
parts = text_from_file.split(r'\x')[1:]
# 把每个片段的十六进制字符转成字节
bytes_data = bytes(int(part[:2], 16) for part in parts)
# 解码为Unicode文本
result = bytes_data.decode('utf-8')
print(result)  # 输出:müller is cool!

关键说明

Python 3里的str和bytes是严格区分的:

  • str → 用encode()转成bytes
  • bytes → 用decode()转成str
    你直接给str调用decode(),自然会触发AttributeError。

内容的提问来源于stack exchange,提问作者FoxOverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:35:54