搜索列表中的术语,并将其替换为单独列表中的相应术语

时间:2018-01-30 14:16:48

标签: python python-3.x python-2.7

所以我试图找到并替换一些术语。我有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

1 个答案:

答案 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块,它就会自动关闭。