我有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
你能帮我理解我在第二个文件中正确继续循环失败的地方吗?如果之前发布的,我很抱歉,但我发现了更复杂的例子。
答案 0 :(得分:1)
您具体指的是[0]行。这就是为什么它只给你第一场比赛。你的循环次数是X次(x是csv中有多少行),但仍然检查每次循环迭代中是否[0]行/_ah/start
。
试试这个:
mine