2010-07-27 57 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) 

¡Estoy obteniendo resultados extraños! ¿Qué está mal con este código?Guardar resultados en el archivo csv con Python

+0

muéstrame o aquel documento por favor, no puedo encontrar que –

+2

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

+5

Hace menos de 24 horas aceptaste la [respuesta que tiene este enlace en su contenido] (http://stackoverflow.com/questions/3339403/smallest-learning-curve-language -to-work-with-csv-files/3339430 # 3339430)! – SilentGhost

Respuesta

22

Uso 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

Rastreo (llamada más reciente la última): archivo "C: \ pythonwork \ readthefile.py", línea 11, en escritor = csv.writer (abiertos (" test1.csv "), 'w') Error: dialecto desconocido –

+0

Los paréntesis no coinciden. No debería recibir ese error con la versión actual. – danben

+1

probé la otra parántis y sigo obteniendo el mismo error writer = csv.writer (open ('test1.csv'), 'w') –

2

Un ejemplo sencillo sería algo así como:

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

Puede cerrar archivos no objeto csv.writer, debe ser f = abrir (fileName, "wb") writer = csv.writer (f) String [] entries = "first # second # third" .split ("#"); writer.writerows (entradas) f.close() – Waqas

3

Puede cerrar archivos no csv.writer objeto, que debe ser:

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

Para su información, hay otras opciones que son más simples que el escritor — numpy, por ejemplo.

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

(Esta respuesta hace 6 años más tarde, por el bien de la posteridad.)

0

Esto es cómo lo hago

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

La sangría es incorrecta y ¿por qué abre el mismo archivo dos veces? –

Cuestiones relacionadas