我的CSV看起来像这样。该列表通常包含大约10-50行:
HASH FILE USER HOST
1C7E2110A55F42F525E196499FF88523 ABC.EXE TEST1 XYZ
3B7E2110A55F42F525E196499AA88421 124.TXT TEST2 SDF
我之前在我的脚本中定义了一个元组,每个集合中有两个值。第一个包含哈希,第二个包含另一个数字。例如:
hashes = [('1C7E2110A55F42F525E196499FF88523', '4'), ('5A7E2110A55F42F525E196499FF88511', '89')]
我想知道如何将我的哈希元组与我的CSV进行比较,然后添加另一个名为" NUMBER"对于我原始CSV和哈希元组中的任何哈希值,使用元组中的第二个值填充。我可以弄清楚如何将另一列添加到CSV中,但是使用我元组中的正确数据填充它是我挂断的地方。因此,对于上面的示例,我希望我的最终CSV输出看起来像这样......授予,CSV和元组会更大,但作为示例:
HASH FILE USER HOST NUMBER
1C7E2110A55F42F525E196499FF88523 ABC.EXE TEST1 XYZ 4
3B7E2110A55F42F525E196499AA88421 124.TXT TEST2 SDF
答案 0 :(得分:1)
一种方法是首先将哈希读入dict,然后通过使用dict向每行添加新列,将输入csv写入输出。
以下是基于您的帖子描述的代码示例:
import csv
hashes = [('1C7E2110A55F42F525E196499FF88523', '4'), ('5A7E2110A55F42F525E196499FF88511', '89')]
hashdata = {}
for hashentry in hashes:
hashdata[hashentry[0]] = hashentry
with open('input.csv','r') as csvinput:
with open('output.csv', 'w') as csvoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
reader = csv.reader(csvinput)
all = []
titlerow = next(reader)
titlerow.append('NUMBER')
all.append(titlerow)
for row in reader:
if row[0] in hashdata:
row.append(hashdata[row[0]][1])
all.append(row)
else:
all.append(row)
writer.writerows(all)