2016-07-20 11 views
1

Ich möchte CSV-Datei lesen, die folgende Daten enthält:Wie lese ich eine Liste, die ein Komma aus der CSV-Datei als Spalte enthält?

Input.csv-

10,[40000,1][50000,5][60000,14] 
20,[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1] 
30,[60000,4] 
40,[40000,5][50000,14] 

ich diese csv-Datei analysieren wollen und analysieren es Zeile für Zeile. Aber diese Listen enthalten Kommas (','), daher bekomme ich kein korrektes Ergebnis.

Programm-Code-

if __name__ == "__main__": 

    with open(inputfile, "r") as f: 
     reader = csv.reader(f,skipinitialspace=True) 
     next(reader,None) 
     for read in reader: 
      no = read[0] 
      splitted_record = read[1]   
      print splitted_record 

Output-

[40000 
[40000 
[60000 
[40000 

kann ich verstehen read.csv Methode liest bis Kommas für jede Spalte. Aber wie kann ich ganze Listen als eine Spalte lesen?

Erwartet Output-

[40000,1][50000,5][60000,14] 
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1] 
[60000,4] 
[40000,5][50000,14] 

Writing Zeug zu anderen File-

name_list = ['no','splitted_record'] 
file_name = 'temp/'+ no +'.csv' 
if not os.path.exists(file_name): 
    f = open(file_name, 'a') 
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list) 
    writer.writeheader() 
else: 
    f = open(file_name, 'a') 
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list) 
writer.writerow({'no':no,'splitted_record':splitted_record}) 

Wie ich dieses splitted_record ohne Zitat schreiben kann ("")?

Danke für alle Antworten!

+0

Warum nicht 'open' und * lesen * ohne' csv' –

+0

@Moses Koledoye- Dies ist die CSV-Datei, die Header auch nicht hat, splitted_record so mit lese ich ** ** csv.reader. – kit

+0

Zeile für Zeile lesen und mit einem regulären Ausdruck teilen – pwnsauce

Antwort

1

können Sie diese Elemente miteinander verbinden, da Sie wissen, dass es durch Komma geteilt

if __name__ == "__main__": 

    with open(inputfile, "r") as f: 
     reader = csv.reader(f,skipinitialspace=True) 
     next(reader,None) 
     for read in reader: 
      no = read[0] 
      splitted_record = ','.join(read[1:])   
      print splitted_record 

Ausgang

[40000,1][50000,5][60000,14] 
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1] 
[60000,4] 
[40000,5][50000,14] 

--- --- Update Daten ist die obige Ausgabe

with open(filepath,'wb') as f: 
    w = csv.writer(f) 
    for line in data: 
     w.writerow([line]) 
+0

@galaxan- Arbeitsdatei, aber beim Schreiben dieses Datensatzes in eine andere Datei Doppel-Cotes ("") angetroffen. Kann ich das auch beim Schreiben entfernen? – kit

+0

@Kit nach Join, die Daten werden Zeichenfolge, also wenn Sie in die Datei schreiben, wird es "" darauf haben. Ich frage mich, ob Sie die Zeichenfolge in die Liste der Liste ändern möchten. – galaxyan

+0

@ galaxyan- Ich möchte nicht die Zeichenfolge in die Liste der Liste ändern, ich möchte nur meine Ausgabedatei so wie es ist [40000,1] [50000,5] [60000,14] ohne Zitat statt ** "[40000,1] [50000,5] [60000,14]" ** mit Zitat ("). – kit

Verwandte Themen