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

文件文本替换代码无法运行问题求助

问题排查与解决方案

问题根源

你的代码当前用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)

代码说明

  1. 导入re模块用于正则匹配
  2. 定义replace_placeholder函数:作为正则替换的回调,提取占位符内的文本(去除前后空格),然后从字典中获取对应值,找不到则保留原占位符
  3. 使用re.sub()匹配所有{{ 任意内容 }}格式的字符串,调用回调函数完成替换
  4. 直接读取整个文件内容进行替换,比逐行处理更简洁高效

运行这段代码后,test.txt中的{{ PRODUCT CATEGORY }}会被正确替换为Customer,输出结果和你的预期一致:

abc asd ds Customer fdsavfacxvasdvvc dfvssfzxvdfvzd

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:38:09