文件文本替换代码无法运行问题求助
问题排查与解决方案
问题根源
你的代码当前用line.split()把每行按空格拆分成单个单词,但目标占位符{{ PRODUCT CATEGORY }}包含空格,拆分后会被拆成{{、PRODUCT、CATEGORY、}}四个独立元素。而你的字典键是完整的PRODUCT CATEGORY,自然无法和拆分后的单个单词匹配,导致替换失败。
修复方案
我们需要匹配完整的占位符格式,而不是拆分单词。可以用正则表达式来识别{{ 内容 }}这种模式,提取括号内的文本后再去字典中查找对应值进行替换。
修改后的代码如下:
import re data = {'PRODUCT CATEGORY':'Customer'} all_files = ['test.txt'] out_files = ['ut.txt'] def replace_placeholder(match): # 提取{{ 和 }}之间的内容,去除前后空格 key = match.group(1).strip() # 如果键在字典中,返回对应值,否则返回原占位符 return data.get(key, match.group(0)) for in_f, out_f in zip(all_files, out_files): with open(in_f,'r') as read_file: content = read_file.read() # 用正则替换所有匹配的占位符 updated_content = re.sub(r'{{\s*(.*?)\s*}}', replace_placeholder, content) with open(out_f,'w+') as write_file: write_file.write(updated_content) print(updated_content)
代码说明
- 导入
re模块用于正则匹配 - 定义
replace_placeholder函数:作为正则替换的回调,提取占位符内的文本(去除前后空格),然后从字典中获取对应值,找不到则保留原占位符 - 使用
re.sub()匹配所有{{ 任意内容 }}格式的字符串,调用回调函数完成替换 - 直接读取整个文件内容进行替换,比逐行处理更简洁高效
运行这段代码后,test.txt中的{{ PRODUCT CATEGORY }}会被正确替换为Customer,输出结果和你的预期一致:
abc asd ds Customer fdsavfacxvasdvvc dfvssfzxvdfvzd
内容的提问来源于stack exchange,提问作者aysh
相关产品推荐
相关产品推荐

