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

如何将Python中open()加载的文件数据正确转换为UTF-8编码?

解决方案

你遇到的核心问题是读取的字符串中\uXXXX是字面量存储的转义字符,而非Python原生的Unicode编码字符:你输出字节内容时看到的\\u就说明反斜杠本身被转义存储了,直接做UTF-8编解码无法识别这类字面量转义。

方法1:使用unicode_escape解码(最简便)

直接对字符串按单字节编码后用unicode_escape解析转义序列即可,示例修改后代码如下:

with open("test.tsv", encoding="utf-8") as import_lines:
    for line in import_lines:
        line_parsed = line.strip().split("\t")
        # 解析Unicode字面量转义
        result = line_parsed[0].encode('latin-1').decode('unicode_escape')
        print(result)

这里用latin-1编码是因为它是单字节编码,每个字节和Unicode码点一一对应,不会丢失原始字符信息,保证转义序列可以被正确解析。

方法2:使用ast.literal_eval解析(更安全,适配复杂场景)

如果字符串中同时存在其他类型的转义符,用ast模块的安全字面量解析方法兼容性更好:

import ast

with open("test.tsv", encoding="utf-8") as import_lines:
    for line in import_lines:
        line_parsed = line.strip().split("\t")
        # 给字符串包裹双引号后作为字面量解析
        result = ast.literal_eval(f'"{line_parsed[0]}"')
        print(result)

这个方法不会有eval()的安全风险,适合来源不可控的文件内容处理。

内容的提问来源于stack exchange,提问作者Bob van Luijt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:39:02