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

使用Python替换HTML中弯引号为普通单引号的问题求助

解决Word转HTML后特殊单引号替换失败的问题

问题核心

用pypandoc将Word文档转换为带图片的HTML后,文档内的‘(左单引号)和’(右单引号)作为邮件正文显示异常,需要替换为普通单引号',但常规的replace或re.sub方法均失效。

失效原因

主要是文件编码不匹配导致:读取HTML文件时未指定UTF-8编码,特殊引号字符被错误解析,无法与代码中写的字符匹配;或是代码文件编码与HTML文件编码不一致,导致匹配字符不对应。

解决步骤

1. 读取文件时强制指定UTF-8编码

打开HTML文件必须显式声明encoding='utf-8',避免系统默认编码造成字符识别错误。

2. 用Unicode编码值精准匹配替换

直接使用特殊引号对应的Unicode编码(‘为\u2018,’为\u2019)进行匹配,绕过编码不一致的问题;也可使用str.translate()批量替换,效率更高。

可行代码示例

# 读取HTML文件,指定UTF-8编码
with open(html_file, 'r', encoding='utf-8') as file:
    html_data = file.read()

# 方法1:正则匹配Unicode编码替换
import re
html_data = re.sub(r'\u2018|\u2019', "'", html_data)

# 方法2:用str.translate批量替换(更高效)
quote_translator = str.maketrans({
    '\u2018': "'",
    '\u2019': "'",
    # 若需替换双引号,可追加:
    # '\u201c': '"',
    # '\u201d': '"'
})
html_data = html_data.translate(quote_translator)

验证

替换后检查短语i’d like to是否转为i'd like to,同时确认图片等其他内容无损坏,再作为邮件正文发送即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:55:18