使用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
相关产品推荐
相关产品推荐

