2010-07-27 14 views
14
import csv 

with open('test.csv', 'rb') as f: 
    data = list(csv.reader(f)) 

import collections 
counter = collections.defaultdict(int) 
for row in data: 
    counter[row[1]] += 1 
for row in data: 
    if counter[row[1]] >= 4: 
     writer = csv.writer(open("test1.csv", "wb")) 
     writer.writerows(row) 

Ich bekomme seltsam Ausgang! Was ist falsch an diesem Code?Ergebnisse in CSV-Datei mit Python speichern

+0

mir zeigen, was ich doc bitte es nicht finden können –

+2

http: // docs.python.org/library/csv.html –

+5

Vor weniger als 24 Stunden haben Sie die [Antwort, die diesen Link in ihrem Inhalt hat] akzeptiert (http://stackoverflow.com/questions/3339403/smallest-learning-curve-language) -zu-arbeiten-mit-csv-files/3339430 # 3339430)! – SilentGhost

Antwort

22

Verwendung csv.writer:

import csv 

with open('thefile.csv', 'rb') as f: 
    data = list(csv.reader(f)) 

import collections 
counter = collections.defaultdict(int) 
for row in data: 
    counter[row[0]] += 1 


writer = csv.writer(open("/path/to/my/csv/file", 'w')) 
for row in data: 
    if counter[row[0]] >= 4: 
     writer.writerow(row) 
+1

Traceback (letzter Anruf zuletzt): Datei "C: \ pythonwork \ readthefile.py", Zeile 11, in writer = csv.writer (open (“ test1.csv ")," w ") Fehler: unbekannter Dialekt –

+0

Die Klammern waren nicht übereinstimmend. Sie sollten diesen Fehler nicht mit der aktuellen Version erhalten. – danben

+1

ich habe versucht, die andere paranthesis und immer noch den gleichen Fehler writer = csv.writer (open ('test1.csv'), 'w') –

2

Ein einfaches Beispiel wäre so etwas wie:

 
writer = csv.writer(open("filename.csv", "wb")) 
String[] entries = "first#second#third".split("#"); 
writer.writerows(entries) 
writer.close() 
+0

Sie können Dateien nicht csv.writer Objekt schließen, sollte es f = offen sein (fileName, "wb") writer = csv.writer (f) Zeichenfolge [] entries = "erste # zweite # dritte" .split ("#"); writer.writerows (Einträge) f.close() – Waqas

3

Sie Dateien schließen kann nicht csv.writer Objekt, sollte es sein:

f = open(fileName, "wb") 
writer = csv.writer(f) 
String[] entries = "first*second*third".split("*"); 
writer.writerows(entries) 
f.close() 
16

Zu Ihrer Information gibt es andere Optionen, die einfacher sind als der Schreiber — zum Beispiel.

import numpy as np 
np.savetxt('data.csv', (col1_array, col2_array, col3_array), delimiter=',') 

(Diese Antwort geschrieben 6 Jahre später, um ihrer selbst willen Nachwelt.)

0

Dies ist, wie ich es tun

import csv 
    file = open('???.csv', 'r') 
    read = csv.reader(file) 
    for column in read: 
      file = open('???.csv', 'r') 
      read = csv.reader(file) 
      file.close() 
      file = open('????.csv', 'a', newline='') 
      write = csv.writer(file, delimiter = ",") 
      write.writerow((,)) 
      file.close() 
+0

Der Einzug ist falsch und warum öffnest du dieselbe Datei zweimal? –

Verwandte Themen