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

2024-04-25 19:23:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我为这个问题道歉。我是Python的新手&我正在使用python2.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实现这一点&任何帮助都将不胜感激。你知道吗


Tags: 文件citynewbostonilcastateyork
1条回答
网友
1楼 · 发布于 2024-04-25 19:23:40

打开第二个文件。使用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

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

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])

这就是要点。你将不得不处理一些小事情,我没有解决,如跳过标题行(s),并重命名'outfile'为'firstfile'(即覆盖旧文件与临时文件)一旦你完成了操作。从技术上讲,避免创建临时文件并在迭代时直接写入文件是可能的,但我建议不要这样做,因为我在这里不深入讨论。你知道吗

相关问题 更多 >