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

如何将文件中的Unicode码点字符串转换为UTF-8字符(Python3)

解决HTML实体转义字符串转UTF-8字符的问题

Python内置的html模块提供了完美的解决方案,无需自行解析字符串,支持所有基本平面Unicode码点,还能处理格式错误的实体。

核心方法:html.unescape()

这个函数可以自动识别并转换所有标准HTML实体(包括命名实体如",以及&#xxxx;/&#xhhhh;形式的Unicode实体)为对应的UTF-8字符;对于无效的格式错误实体,会直接保留原内容,不会抛出异常。

代码示例

以下是读取输入文件、处理每一行并写入UTF-8输出文件的完整代码:

import html

# 读取ASCII格式的输入文件,写入UTF-8格式的输出文件
with open('input.txt', 'r', encoding='ascii') as in_file, open('output.txt', 'w', encoding='utf-8') as out_file:
    for line_num, line in enumerate(in_file, 1):
        # 处理转义
        decoded_line = html.unescape(line)
        out_file.write(decoded_line)
        
        # 可选:如果需要处理极端错误情况(如编码错误),可以加异常捕获
        # try:
        #     decoded_line = html.unescape(line)
        #     out_file.write(decoded_line)
        # except UnicodeDecodeError as e:
        #     print(f"第{line_num}行编码错误,保留原行: {e}")
        #     out_file.write(line)

说明

  1. 编码设置:输入文件用ascii编码读取,确保正确读取所有ASCII格式的实体字符串;输出文件用utf-8编码写入,保证转换后的Unicode字符正确保存。
  2. 错误处理:html.unescape()本身对无效实体(如&invalid;)会直接保留,无需额外处理;如果遇到文件编码错误,可以添加try-except块捕获并处理,避免程序中断。
  3. 直接读写无效的原因:文件中的内容是转义后的实体字符串,Python读取后会将其视为普通文本,不会自动解析实体;而你在解释器直接输入时,若输入的是未转义的Unicode字符或Python原生转义序列,解释器会自动解析,但文件中的HTML实体需要专门的解码工具处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:25:02