2014-10-29 4 views
-2

Я пытаюсь написать некоторый вывод в csv из моего кода ниже. В первом столбце должны быть все допустимые идентификаторы с заголовком, который гласит «Действительный (подсчет в скобках)». Второй столбец должен содержать список всех недопустимых идентификаторов и иметь заголовок, который говорит «Недействительный (подсчет в скобках)». Любая идея, как я это делаю?Запись значений CSV-файл

import csv 

# csv_path = r'C:\temp\data\fileA' 
csv_path = r'C:\temp\data\fileA' 
reader = csv.reader(open(csv_path, 'r'), dialect='excel-tab') 
reader.next() # ignore heading 
min_id = 1503332138 
max_id = 1503632138 
valid_ids = [] 
invalid = [] 
x = 0 
for line in reader: 
    pv = line[1] 
    if id.isdigit() and int(id) >= min_id and int(id) <= max_id: 
     if id not in valid_ids: 
      valid_ids.append(id) 
    else: 
     if id not in invalid: 
      invalid.append(id) 
print 'Valid IDs (',len(valid_ids),')' 
for valid in valid_ids: 
    print valid 
print 'Invalid IDs (',len(invalid),')' 
for invalid in invalid: 
    print invalid 
+4

показать некоторые входные выборки и желаемый результат, вместе с проблемами вы столкнулись. – fedorqui

ответ

0
# ... 
# Continuing from point where you have valid_ids and invalid lists populated 

data = [('Valid IDs', valid_ids), ('Invalid IDs', invalid)] 

# Create header 

header = [] 
for (label, id_list) in data: 
    label_with_count = '%s (%d)' % (label, len(id_list)) 
    header.append(label_with_count) 

# Write to CSV file 

with open('path_to_output_file.csv') as out_csv_file: 
    csv_writer = csv.writer(out_csv_file) 

    csv_writer.writerow(header) 

    for (idx, dataset) in enumerate(data): 
     (label, id_list) = dataset 
     for id in id_list: 
      row = (idx * ['']) + [id] + ((len(data) - idx - 1) * ['']) 
      csv_writer.writerow(row) 
Смежные вопросы