Python如何基于replace.txt规则替换字符串内HTML特殊字符
Python基于规则文件替换特殊字符实现方案
场景说明
需要读取replace.txt中存储的替换规则,替换目标文本中的左弯引号(对应HTML编码“)、右弯引号”特殊字符为普通双引号。
现有配置
replace.txt规则内容(每行空格分隔待替换内容、替换目标):
注:原配置中写的“ " ” ""是双引号的HTML实体表示,实际替换目标为普通半角双引号"- 待处理测试字符串:
string = 'Biden Brags About Handing Out “Record” Number of Work Visas to Foreigners'
实现代码
1. 读取替换规则
读取规则文件时指定UTF-8编码,避免特殊字符乱码,逐行解析生成替换映射字典:
replace_map = {} # 指定utf-8编码读取文件,防止弯引号乱码 with open('replace.txt', 'r', encoding='utf-8') as f: for line in f: line = line.strip() if not line: continue # 最多拆分1次,避免替换内容含空格时解析错误 old_str, new_str = line.split(maxsplit=1) replace_map[old_str] = new_str.strip() # 补充HTML编码“的替换规则 replace_map['“'] = '"'
2. 执行文本替换
如果文本中混杂其他HTML实体编码,可以先做统一转义,再遍历规则完成替换:
import html # 待处理原始字符串 string = 'Biden Brags About Handing Out “Record” Number of Work Visas to Foreigners' # 可选:统一转义文本中所有HTML实体编码 string = html.unescape(string) # 遍历规则逐一替换 for old, new in replace_map.items(): string = string.replace(old, new) # 打印输出结果 print(string)
运行后输出结果:
Biden Brags About Handing Out "Record" Number of Work Visas to Foreigners
常见问题说明
- 替换失效优先检查文件读取编码:未指定
encoding='utf-8'时,Windows系统默认用GBK编码读取文件,会导致弯引号读为乱码,无法匹配到待替换内容- 如果
replace.txt中存储的是"这类HTML实体字面字符串,解析规则时需要调用html.unescape(new_str)将实体转为实际字符后再存入替换映射- 不要直接用
split()拆分规则行,否则替换目标包含空格时会触发值拆分过多的报错
内容的提问来源于stack exchange,提问作者Frank Werrent
相关产品推荐
相关产品推荐

