如何用字典对应值替换文件中的指定占位符?附示例场景
我来帮你搞定这个文本替换的问题!看起来你需要把模板里的<<KEY>>格式占位符替换成字典中对应的值,下面是一套清晰的实现思路和代码示例,应该能解决你的问题:
核心实现思路
- 先把模板文件的内容完整读入内存
- 遍历你的数据字典,将每个键转换成
<<KEY>>格式的占位符 - 把模板中所有匹配的占位符替换成对应的值
- 将替换后的内容写入新文件(避免覆盖原模板)
Python代码示例
def read_template(template_path): """读取包含占位符的模板文件""" with open(template_path, 'r', encoding='utf-8') as f: return f.read() def replace_placeholders(template_content, data_dict): """替换模板中的所有<<KEY>>占位符""" for key, value in data_dict.items(): # 生成匹配的占位符格式 placeholder = f'<<{key}>>' # 注意:数字类型要转成字符串才能替换 template_content = template_content.replace(placeholder, str(value)) return template_content def write_result(output_path, final_content): """将替换后的内容写入输出文件""" with open(output_path, 'w', encoding='utf-8') as f: f.write(final_content) if __name__ == '__main__': # 替换成你的实际文件路径 template_file = 'grade_template.txt' output_file = 'student_grade_report.txt' # 这里是从其他文件读取后整理好的字典(示例数据) student_grades = { 'NAME': 'Alice Smith', 'ID': '12345', 'COURSE': 'CS101', 'DUE': '2024-05-20', 'SUBMITTED': '2024-05-21', 'MINUTESLATE': 120, 'LATEDEDUCTION': 5, 'P1': 30, 'P1COMMENTS': 'Good work, but missed edge case', 'P2': 35, 'P2COMMENTS': 'Perfect implementation', 'SUBTOTAL': 65, 'TOTAL': 60 } # 执行完整流程 template_content = read_template(template_file) final_report = replace_placeholders(template_content, student_grades) write_result(output_file, final_report)
注意事项(可能踩坑的点)
- 大小写严格匹配:模板里的
<<P1>>必须和字典中的键'P1'大小写完全一致,否则会替换失败 - 数据类型处理:字典里的数字(比如
MINUTESLATE、P1)一定要转成字符串再替换,否则会触发类型错误 - 文件编码:如果模板包含中文或特殊字符,打开文件时务必指定
encoding='utf-8',避免乱码 - 批量处理:如果要给多个学生生成报告,可以把
student_grades改成字典列表,循环遍历每个学生数据即可
内容的提问来源于stack exchange,提问作者jpruee
相关产品推荐
相关产品推荐

