2016-08-30 2 views
-1

ich eine CSV-Datei haben ipValues.csv genannt, die folgende Daten enthält:Lesen von Daten aus einer CSV und erstellen eine andere modifizierte CSV-Datei

IPs    Values 
192.168.1.231 c3s8b1p1 c3s8b1p2 c3s4b1p3   
192.168.1.179 c1s1b1p1 c1s1b1p2 c1s3b1p1 c3s2b1p2 c3s2b1p3 
192.168.1.195 c1s1b2p8     
192.168.1.162 c1s4b7p8 c1s1b1p3 c1s1b2p2 c1s1b2p3 c1s1b2p5 
192.168.1.179 c1s1b1p1 c1s1b1p2 c1s3b1p1 c3s2b1p2 c3s2b1p3 
192.168.1.143 c2s4b1p2 c2s2b1p3 c2s2b1p5 c2s2b1p9  
192.168.1.231 c3s8b1p1 c3s8b1p2 c3s4b1p3 c3s7b1p6 c2s2b1p1 
192.168.1.187 c5s4b1p2 c4s9b1p3    
192.168.1.114 c1s1b1p10 c1s3b6p1 c1s1b10p9 c4s10b1p1 
192.168.1.132 c1s1b2p1 c1s10b7p8 c4s9b1p1 c4s9b1p2 c3s6b1p3 
192.168.1.164 c1s1b1p5 c1s1b1p9 c1s1b1p8 c1s1b2p2 c3s5b1p2 

ich eine andere CSV-Datei in folgendem Format erstellen möchten:

values Ips 
c3s8b1p1 192.168.1.231 
c3s8b1p2 192.168.1.231 
c3s4b1p3 192.168.1.231 
c1s1b1p1 192.168.1.179 
c1s1b1p2 192.168.1.179 
c1s3b1p1 192.168.1.179 
c3s2b1p2 192.168.1.179 
c3s2b1p3 192.168.1.179 

und so weiter ...

ich weiß Jungs dies sehr schwer zu verstehen, aber ich weiß nicht, wie kann ich dies, Sorry für das erklären. Bitte gib mir einen Vorschlag.

+1

Was haben Sie versucht? Je nach Größe Ihrer Datei ist dies mit einem Python-Wörterbuch problemlos möglich. – Andrew

+0

step-1) Ich möchte 1. Wert und entsprechende Ip dann 2. Werte und corr Ip dann 3. Wert und seine ip danach \ n und wieder Wert -Ip, Wert-ip –

+1

Ich kann sehen, was Sie tun wollen, aber Es scheint, als hättest du keinen Versuch für dich gemacht und möchtest nur, dass die Community es für dich tut. Wenn Ihre CSV-Datei 20 GB groß ist, benötigen Sie eine deutlich andere Lösung als bei 20 KB. – Andrew

Antwort

1

Folgendes sollte Ihnen den Einstieg und helfen zu erklären, wie sich die Dinge auf eine kleine Datei für die Verwendung zu tun:

import csv 

with open('ipValues.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output: 
    csv_input = csv.reader(f_input) 
    csv_output = csv.writer(f_output) 

    next(csv_input)  # skip header 
    csv_output.writerow(["values", "Ips"]) 

    for row in csv_input: 
     for entry in row[1:]: 
      csv_output.writerow([entry, row[0]]) 

Geben Sie eine CSV-Ausgabedatei wie folgt:

values,Ips 
c3s8b1p1,192.168.1.231 
c3s8b1p2,192.168.1.231 
c3s4b1p3,192.168.1.231 
c1s1b1p1,192.168.1.179 
c1s1b1p2,192.168.1.179 
c1s3b1p1,192.168.1.179 
c3s2b1p2,192.168.1.179 
c3s2b1p3,192.168.1.179 
c1s1b2p8,192.168.1.195 
c1s4b7p8,192.168.1.162 
c1s1b1p3,192.168.1.162 
c1s1b2p2,192.168.1.162 
c1s1b2p3,192.168.1.162 
c1s1b2p5,192.168.1.162 
c1s1b1p1,192.168.1.179 
c1s1b1p2,192.168.1.179 
c1s3b1p1,192.168.1.179 
c3s2b1p2,192.168.1.179 
c3s2b1p3,192.168.1.179 
c2s4b1p2,192.168.1.143 
c2s2b1p3,192.168.1.143 
c2s2b1p5,192.168.1.143 
c2s2b1p9,192.168.1.143 
c3s8b1p1,192.168.1.231 
c3s8b1p2,192.168.1.231 
c3s4b1p3,192.168.1.231 
c3s7b1p6,192.168.1.231 
c2s2b1p1,192.168.1.231 
c5s4b1p2,192.168.1.187 
c4s9b1p3,192.168.1.187 
c1s1b1p10,192.168.1.114 
c1s3b6p1,192.168.1.114 
c1s1b10p9,192.168.1.114 
c4s10b1p1,192.168.1.114 
c1s1b2p1,192.168.1.132 
c1s10b7p8,192.168.1.132 
c4s9b1p1,192.168.1.132 
c4s9b1p2,192.168.1.132 
c3s6b1p3,192.168.1.132 
c1s1b1p5,192.168.1.164 
c1s1b1p9,192.168.1.164 
c1s1b1p8,192.168.1.164 
c1s1b2p2,192.168.1.164 
c3s5b1p2,192.168.1.164 

Dieses getestet wurde Verwenden von Python 2.7. Es verwendet die Bibliothek csv von Python zum Parsen und Erstellen der CSV-Einträge in Ihren Dateien.

+0

Vielen Dank –

+0

Vielen Dank seine Werke für mich. \ –

+0

Gern geschehen. Wenn Sie mit einer Antwort zufrieden sind, vergessen Sie nicht, auf das graue Häkchen neben der Antwort zu klicken, um es als akzeptierte Antwort auszuwählen. –

Verwandte Themen