搜索并替换为文档中的行
问题描述:
我正在尝试编写一个代码,用于搜索文档中的一行并用它替换。我有:搜索并替换为文档中的行
import re
x = open(r'F:\1\xxx.txt')
string = open(r'F:\1\xxx.txt').read()
Lines = x.readlines()
new_str = re.sub('zzz1', (Lines[1]) , string)
new_str = re.sub('zzz2', (Lines[2]) , string)
open(r'F:\1\xxx2.txt', 'w').write(new_str)
在XXX1文件我已经写了测试
1
2
3
4
5
6
7
8
9
10
zzz1
zzz2
但输出I XXX2文件中得到的是
1
2
3
4
5
6
7
8
9
10
zzz1
3
任何知道我做错了什么?
答
工作溶液:
进口重新 X =开放(r'F:\ 1 \ xxx.txt ') 线= x.readlines()
repldict = {' zzz1' :(。线[0])条(), 'zzz2' :(线[1])条()} DEF replfunc(匹配): 返回repldict [match.group(0)]
正则表达式=重.compile('|'.join(re.escape(x)for x in repldict)) with open(r'F:\ 1 \ xxx.txt)as fin,open(r'F:\ 1 \ xxx2 .txt','w')作为fout: 对于行: fout.write(regex.sub(replfunc,line))
'new_str = re.sub('zzz2',(Lines [2]),string)':你覆盖'new_str '在这一点上...不确定这是唯一的问题,因为代码特别复杂且难以阅读 –
因为当你执行'.readlines()'时,你已经使用'.read()'读取了整个文件。 )''''Lines'应该是一个空列表,你应该得到'IndexError's - 你确定这是你正在运行的代码吗? –
绝对代码即时通讯运行。毫无疑问,在编写以前的替换为什么只有zzz2被替换。我可以让代码做两次搜索和替换,为什么zzz2换成了第三行而不是第二行? – chickflick91