2016-09-28 8 views
0

Ich habe zwei csv-Dateien result.csv und sample.csv.Python umschreiben statt anhängen

Result.csv

M11251TH1230 
M11543TH4292 
M11435TDS144 

sample.csv

M11435TDS144,STB#1,Router#1 
M11543TH4292,STB#2,Router#1 
M11509TD9937,STB#3,Router#1 
M11543TH4258,STB#4,Router#1 

Ich habe einen Python-Skript, das sowohl die Dateien vergleichen, wenn Zeile in Result.csv mit dem ersten Wort in der Zeile paßt in sample.csv, dann anhängen 1 sonst anfügen 0 an jeder Zeile in sample.csv

Es sollte wie M11435TDS144, STB # 1, Router # 1,1 und M11543TH4258, STB # 4, Router # 1,0 seit M11543TH4258 aussehen ist nicht fo und in Result.csv

script.py

import csv 
with open('result.csv', 'rb') as f: 
    reader = csv.reader(f) 
    result_list = [] 
    for row in reader: 
     result_list.extend(row) 


with open('sample.csv', 'rb') as f: 
    reader = csv.reader(f) 
    sample_list = [] 
    for row in reader: 
     if row[0] in result_list: 
      sample_list.append(row + [1]) 
     else: 
      sample_list.append(row + [0]) 

with open('sample.csv', 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerows(sample_list) 

Beispielausgabe (sample.csv), wenn ich das Skript zweimal ausführen

M11435TDS144,STB#1,Router#1,1,1 
M11543TH4292,STB#2,Router#1,1,1 
M11509TD9937,STB#3,Router#1,0,0 
M11543TH4258,STB#4,Router#1,0,0 

Jedes Mal, wenn ich das Skript ausführen, 1 und 0 werden in einer neuen Spalte sample.csv angehängt. Gibt es eine Möglichkeit, jedes Mal, wenn ich das Skript ausführe, kann ich die angehängte Spalte anstelle von Spalten zu ersetzen.

+0

Warum das Leben schwer machen? Ändern Sie einfach den Namen der Ausgabedatei, z. B. sample_result.csv. Dann funktioniert dein Code. Alles, was Sie später tun müssen, ist die neue Datei anstatt der sample.csv zu verarbeiten. –

Antwort

0

Sie schreiben an die sample.csv und dann verwenden Sie es als Eingabedatei, mit der zusätzlichen Spalte. Deshalb haben Sie mehr und mehr 1 und 0 in dieser Datei. Grüße, Grzegorz