【问题标题】:Appending To A CSV From A Tuple in Python从 Python 中的元组附加到 CSV
【发布时间】:2016-11-13 11:15:03
【问题描述】:

我有一个看起来像这样的 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

【问题讨论】:

标签: python csv append


【解决方案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)

【讨论】:

    猜你喜欢
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2013-12-23
    相关资源
    最近更新 更多