2016-07-11 3 views
1

У меня есть CSV, который выглядит примерно так. Список обычно содержит около 10-50 строк:Добавление в CSV из кортежа в Python

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

Есть несколько вопросов о добавлении столбца т файла. В сущности вам нужно написать в новый файл: http://stackoverflow.com/questions/11070527/how-to-add-a-new-column-to-a-csv-file-using-python, http://stackoverflow.com/questions/23682236/add-a-new-column-to-an-existing-csv-file, http://stackoverflow.com/questions/23261852/adding-column-in-csv-python-and -enumerating-это – doctorlove

ответ

1

Один подход заключается в первую прочитать хэши в Словаре , а затем запись ввода csv в вывод, добавив новый столбец в каждую строку, используя dict.

Ниже приведен пример кода на основе вашего описания поста:

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) 
Смежные вопросы