我为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;任何帮助将不胜感激。
答案 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'(即用临时文件覆盖旧文件)随着操作。技术上 可以避免创建临时文件并在迭代时直接写入文件,但我建议反对它,因为我不会在这里深入研究。