搜索并替换为文档中的行

问题描述:

我正在尝试编写一个代码,用于搜索文档中的一行并用它替换。我有:搜索并替换为文档中的行

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 

任何知道我做错了什么?

+0

'new_str = re.sub('zzz2',(Lines [2]),string)':你覆盖'new_str '在这一点上...不确定这是唯一的问题,因为代码特别复杂且难以阅读 –

+0

因为当你执行'.readlines()'时,你已经使用'.read()'读取了整个文件。 )''''Lines'应该是一个空列表,你应该得到'IndexError's ​​ - 你确定这是你正在运行的代码吗? –

+0

绝对代码即时通讯运行。毫无疑问,在编写以前的替换为什么只有zzz2被替换。我可以让代码做两次搜索和替换,为什么zzz2换成了第三行而不是第二行? – chickflick91

工作溶液:

进口重新 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))