2010-07-26 7 views
2

j'ouvre un fichier csv comme ceci:questions python csv

import csv 
reader = csv.reader(open("book1.csv", "rb")) 
for row in reader: 
    print row 

Comment remplacer la valeur dans la colonne 3 avec son log puis enregistrez le résultat dans une nouvelle csv?

+1

Qu'avez-vous essayé? Savez-vous comment créer un nouveau fichier? Avez-vous essayé de créer un nouveau fichier avec les modifications? Postez ce code, aussi, s'il vous plaît. –

+1

que diriez-vous lire la documentation et le tutoriel? – SilentGhost

+2

Cela fait 31 minutes depuis la première question. Bien sûr, il devrait être évident que nous pouvons aider à écrire du code. –

Répondre

4

Comme ça?

>>> input = "1,2,3\n4,5,6\n7,8,9".splitlines() 
>>> reader=csv.reader(input) 
>>> for row in reader: 
...  row[2] = log(float(row[2])) 
...  print ','.join(map(str,row)) 
... 
1,2,1.09861228867 
4,5,1.79175946923 
7,8,2.19722457734 
0

Vous devez utiliser le gestionnaire de contexte WITH pour les fichiers - plus propre, moins de code, pallie file.close() déclarations.

par exemple.

import csv 
import math 
with open('book1.csv', 'rb') as f1,open('book2.csv', 'wb') as f2: 
    reader = csv.reader(f1) 
    writer = csv.writer(f2) 
    for row in reader: 
     row[2] = str(math.log(float(row[2]))) 
     writer.writerow(row)