所以我试图找到并替换一些术语。我有3个单独的文件。第一个文件,我们可以打电话给浆果'并且是.txt文件,其中包含我们将搜索的术语。第二个文件,' newberries'是.txt文件,一旦找到匹配项,应该使用' newberries'替换找到的匹配项。我们将在其中解析和替换的文件将是' berrylist.txt'。对于前两个文件,要搜索的术语的位置和替换它的术语是完全相同的。因此,第2行可以替换为“新莓”的第2行。文件等。我开始考虑建立一个字典,找到并替换,但无法绕过它。 我的第二个选择是使用正则表达式并搜索条款,然后添加我的' _3'在名称的末尾和'之间" '那是关闭的。所以在要解析的文件中,它将显示为" blackberry"并且需要附加一个术语" blackberry_3"。
find = open('berries.txt')
findline = list(find)
replace = open('newberries.txt')
replaceline = list(replace)
with open('berrylist.txt') as f:
lines = f.read()
with open('berrylist.txt', 'w') as f:
for findline in f:
data = lines.replace(findline, replaceline)
配置文件示例:文件名:td-adc-post.txt 设置设备组TESTDEV-ADC预规则库安全规则" IA - Auto Pod Control" 设置设备组TESTDEV-ADC预规则库安全规则" IA - Auto Pod Control" 设置设备组TESTDEV-ADC预规则库安全规则RDC_MQ 设置设备组TESTDEV-ADC预规则库安全规则RDC_MQ
示例搜索条款:文件名:ADCdup.txt (第9行)IA - 自动窗格控制 (第50行)RDC_MQ 示例更改期限:文件名:ADCdupreplace.txt (第9行)IA - Auto Pod Control_3 (第50行)RDC_MQ_3
答案 0 :(得分:1)
构建字典并处理每一行。
with open('berries.txt') as f:
findline = f.read().split('\n')
with open('newberries.txt') as f:
replaceline = f.read().split('\n')
replacedict = {}
for i in range(len(findline)):
replacedict[findline[i]] = replaceline[i]
with open('berrylist.txt', 'r') as fin:
lines = fin.read().split('\n')
with open('berrylist_done.txt', 'w') as fout:
for i in lines:
fout.write((replacedict[i] if i in replacedict else i) + '\n')
无需担心在此处关闭文件,因为当您使用with open...
时,只要您退出with
块,它就会自动关闭。