web-dev-qa-db-fra.com

Enregistrer les résultats dans un fichier csv avec Python

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)

Je reçois une sortie étrange! Quel est le problème avec ce code?

Utilisez 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)
32
danben

Je sais que la question concerne l’implémentation de votre package "csv", mais pour votre information, il existe des options beaucoup plus simples, par exemple numpy.

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

(Cette réponse a été postée 6 ans plus tard, pour l'amour de la postérité.)

Dans un cas différent, supposons que vous ayez deux colonnes comme ceci:

names = ['Player Name', 'Foo', 'Bar']
scores = ['Score', 250, 500]

Vous pourriez le sauvegarder comme ceci:

np.savetxt('scores.csv', [p for p in Zip(names, scores)], delimiter=',', fmt='%s')

scores.csv ressemblerait à ceci:

Player Name,Score
Foo,250
Bar,500
31
Joseph Hansen

Vous pouvez fermer les fichiers non csv.writer, cela devrait être:

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

Un exemple simple serait quelque chose comme:

 writer = csv.writer (open ("nomfichier.csv", "wb")) 
 String [] entries = "premier # deuxième # troisième" .split ("#"); 
 écrivain. writerows (entrées) 
 writer.close () 
2
user353283

Voici comment je le fais

 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
Python lover