从Python中的元组追加到CSV

时间:2016-07-11 13:21:59

标签: python csv append

我的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

1 个答案:

答案 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)