Python替换文件指定文本时出现TypeError错误该如何解决?
问题原因与修复方案
错误根因
- 核心问题是你在循环内部错误覆盖了原本存储替换映射的
replace_txt字典变量:- 初始定义的
replace_txt = {'A':'B'}是字典类型,用于存储「待搜索字符:替换后字符」的对应关系 - 处理第一行内容时,第一次进入内层循环就执行了
replace_txt = replace_txt[search_txt],此时replace_txt会被重新赋值为字符串'B' - 处理第二行内容时,内层循环遍历已经变成字符串的
replace_txt,取到的search_txt是字符串的单个字符'B',再执行replace_txt[search_txt]相当于用字符串作为索引去取字符串的值,不符合Python语法要求,直接触发TypeError报错,程序终止运行,剩下的两行内容未被处理写入。
- 初始定义的
修正后代码
你只需要不要覆盖原本的替换映射字典,单独取用替换值即可,修改后的代码如下:
import fileinput # 将映射字典改名避免和替换值变量冲突,语义更清晰 replace_map = {'A':'B'} for line in fileinput.input('text1.txt', inplace=True): for search_txt, replace_txt in replace_map.items(): line = line.replace(search_txt, replace_txt) print(line, end='')
运行效果
修改后的文件内容会符合全量替换的预期:
B is best B is cool B is awesome
内容的提问来源于stack exchange,提问作者Vani
相关产品推荐
相关产品推荐

