比较两个文本文件,将第一个文件中包含字符串的行替换为第二个文件中的行

时间:2017-04-20 12:44:52

标签: python string text

我试图替换file1中有错误的行'来自file2的更正值(见下文)。

文件1:

MAGA 0.0159
TTKI error
MCCN 0.0391
NEFD 0.9982
ESYA error

file2的:

TTKI 0.7652
ESYA 0.5517

期望的输出:

MAGA 0.0159
TTKI 0.7652
MCCN 0.0391
NEFD 0.9982
ESYA 0.5517

以下是我一直试图去做的事情,但我想我已经离开了,并且在最后一小时左右变得越来越沮丧,所以任何帮助都会受到赞赏。

section2 = []

f2 = open('file2', 'r')

for line2 in f2:
    section2.append(str(line2.split(' ',0)))

f1 = open('file1', 'r')

for line1 in f1:
    if str(section2[0]) in line1:
        print section2[0]
    else:
        print line1

4 个答案:

答案 0 :(得分:1)

您可以创建正确值的dict

dict2 = {}
for line in f2:
   key, value = line.split(' ')
   dict2[key] = value

然后

for line1 in f1:
    key, value = line1.split(' ')
    if value == 'error':
        print(key, dict2[key])
    else:
        print(line1)

答案 1 :(得分:1)

使用字典而不是数组:

corrections = {}

f2 = open('file2.txt', 'r')

for line2 in f2:
    (key, value) = line2.split(' ')
    corrections[key] = value

f1 = open('file1.txt', 'r')

for line1 in f1:
    (key, value) = line1.split(' ')
    if key in corrections:
        print(key, corrections[key])
    else:
        print(line1)

这是您的字典在读取更正文件后的样子:

{'TTKI': '0.7652', 'ESYA': '0.5517'}

当读取file1时,也会拆分行以检查第一个值是否是字典中的一个键(key in corrections)。如果不是,则只打印原始行(即使它包含error)。但如果我们进行了修正,则会打印出来(print (key, corrections[key])。这里我们使用print在其参数之间插入空格的事实。

答案 2 :(得分:1)

这是一个简单的逻辑:

打开第二个文件并从中创建一个字典。 读取file1行/行 在线搜索错误, 如果发现  得到第一个错误行  从字典中获取相应的值  将错误替换为您获得的值 将该行写入第3个文件

答案 3 :(得分:1)

parfor ii =1 :100
   T {ii,:}=normxcorr2(template{:} ,image{ii});
end