思路:直接遍历文件的所有行,对于每一行进行目标字符串换,并将替换后的内容保存到一个列表中。最终用 file.writelines() 函数将替换后的内容重新写入文件即可。
当然,这个方法相当于将所有文件内容都读了一边并且写了一遍。我们可以直接在读的同时替换效率更高一些,但其代码同样简单,就不写了。。
代码:
1 # 用户输入"xxx.txt"类文档文件名 2 3 # 用户输入被替换的"待替换字" 4 5 # 用户输入替换目标"新的字" 6 7 # 用户判断是否全部替换 yes/no 8 9 def file_replace(file_name, rep_word, new_word): 10 f_read = open(file_name) 11 12 content = [] 13 count = 0 14 15 for eachline in f_read: 16 if rep_word in eachline: 17 count = count + eachline.count(rep_word) 18 eachline = eachline.replace(rep_word, new_word) 19 content.append(eachline) 20 print('===========') 21 22 decide = input(' 文件 %s 中共有 %s 个【%s】 您确定要把所有的【%s】替换为【%s】么? 【yes/no】:' 23 %(file_name, count, rep_word, rep_word, new_word)) 24 25 if decide in ['yes', 'Yes', 'YES']: 26 f_write = open(file_name, 'w') 27 f_write.writelines(content) 28 f_write.close() 29 print('更改成功') 30 else: 31 print('您放弃了更改') 32 33 f_read.close() 34 35 file_name = input('请输入文件名(请输入绝对路径):') 36 rep_word = input('请输入要替换的单词或字符: ') 37 new_word = input('请输入新的字符: ') 38 file_replace(file_name, rep_word, new_word)