比较两个文件的最佳方法是什么?在Python中更新第二个文件中第一个文件的值?

时间:2014-02-03 04:00:16

标签: python python-2.6

我为nOOb问题道歉。我是Python&的新手我正在使用Python 2.6。我有两个文件,我需要比较它们和&从第二个文件更新第一个文件的值。

我的第一个文件如下,

SeqNo   City           State

1   Chicago         IL

2   Boston          MA

3   New York    NY

4   Los Angeles CA

5   Seattle         WA

我的第二个文件如下,

SeqNo   City           State   NewSeqNo

5   Seattle     WA  1

1   Chicago         IL  2

4   Los Angeles CA  3

2   Boston          MA  4

3   New York    NY  5

如何使用第二个文件中NewSeqNo中的值更新第一个文件中的SEQ号?

例如,第一个文件的输出应为

NewSeqNo   City           State

2   Chicago         IL

4   Boston          MA

5   New York    NY

3   Los Angeles CA

1   Seattle         WA

我需要使用Python& amp;任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

打开第二个文件。使用csv.reader来处理每行的标记。

使用dict建立oldseq-> newseq的映射。

import csv

lookup = {}
with open('secondfile') as f:
    reader = csv.reader(f)
    for line in reader:
        oldseq, city, state, newseq = line
        lookup[oldseq] = newseq

现在打开你的第一个文件。使用相同的策略,但将SeqNo替换为映射dict中的值。

with open('firstfile') as f, open('outfile','w') as w:
    reader = csv.reader(f)
    writer = csv.writer(w)
    for line in reader:
        seq, city, state = line
        if seq in lookup:
            seq = lookup[seq]
        writer.writerow([seq, city, state])

这就是它的要点。你将不得不处理一些我没有解决的小事,比如跳过标题行,并在完成后将'outfile'重命名为'firstfile'(即用临时文件覆盖旧文件)随着操作。技术上 可以避免创建临时文件并在迭代时直接写入文件,但我建议反对它,因为我不会在这里深入研究。