2个csv文件之间的循环在第一个马赫

时间:2016-08-15 17:08:00

标签: python python-3.x csv for-loop

我有2个csv个文件:源文件只有一个带ID的列(每行一个ID)。第二个csv文件具有ID和额外信息。我想针对file1中的所有记录检查file2中的每个ID,如果匹配,则打印出匹配的行(来自file1)以及来自file2的相应信息0234906006000 0234765306000 0231316005000 0234906006000 0212134006000 0125667806000 3334906006000 1778986006000 0239906006000

文件看起来像这样。

来源:

02349-34-010-000,Adam
05125-07-033-000,Michael
05172-04-042-000,Debora
8071-33-001-000,Matt
2349-38-007, 2349-38-011, 2349-38-012,Ken
0234906006000,Roger
3334906006000,Hummels
0231316005000,Don
0501401028000,Gregg

矿:

import csv
source = csv.reader(open("denver_source.csv"))
mine = csv.reader(open("denver_mine.csv"))
output = {}
for line in source:
    print(line[0])
    for xline in mine:
        if line[0] not in xline: continue
        output[line[0]] = xline
    print(xline)
print("Result", output)

我的代码如下:

0234906006000
['0501401028000', 'Gregg']
0234765306000
['0501401028000', 'Gregg']
0231316005000
['0501401028000', 'Gregg']
0234906006000
['0501401028000', 'Gregg']
0212134006000
['0501401028000', 'Gregg']
0125667806000
['0501401028000', 'Gregg']
3334906006000
['0501401028000', 'Gregg']
1778986006000
['0501401028000', 'Gregg']
0239906006000
['0501401028000', 'Gregg']
Result: {'0234906006000': ['0234906006000', 'Roger']}

我得到一个结果,但我没有得到所有的比赛,只有第一场比赛:

ls /etc/apt/sources.list.d

你能帮我理解我在第二个文件中正确继续循环失败的地方吗?如果之前发布的,我很抱歉,但我发现了更复杂的例子。

1 个答案:

答案 0 :(得分:1)

您具体指的是[0]行。这就是为什么它只给你第一场比赛。你的循环次数是X次(x是csv中有多少行),但仍然检查每次循环迭代中是否[0]行/_ah/start

试试这个:

mine