Schreiben mit Python ' s built-in .csv-Modul

[Bitte beachten Sie, dass dies eine andere Frage, die bereits beantwortet So ersetzen Sie eine Spalte mithilfe von Python ' s built-in .csv-writer-Modul?]

Ich tun müssen, um einen finden und ersetzen (spezifisch für eine Spalte mit URLs) in eine riesige Excel .csv-Datei. Da bin ich in der Anfangsphase der versucht, mir beibringen, eine scripting-Sprache, ich dachte, ich würde versuchen, implementieren die Lösung in python.

Ich habe Probleme wenn ich versuche zu schreiben, wieder ein .csv-Datei nach einer änderung des Inhalts eines Eintrags. Ich habe gelesen, die offizielle csv-Modul-Dokumentation darüber, wie Sie mithilfe der writer, aber es ist nicht ein Beispiel, umfasst in diesem Fall. Speziell, ich versuche, das Lesen, ersetzen und write-Operationen in einem durchgeführt Schleife. Jedoch kann man nicht verwenden das gleiche 'Zeile' - Referenz sowohl in der for-Schleife das argument und der parameter für writer.writerow(). So, nachdem ich die änderung in der for-Schleife, wie sollte ich zurück schreiben in die Datei?

edit: ich umgesetzt die Vorschläge von S. Lott und Jimmy, immer noch das gleiche Ergebnis

edit #2: ich fügte hinzu, die "rb" - und "wb" auf die open () - Funktionen, pro S. Lott ' s Vorschlag

import csv

#filename = 'C:/Documents and Settings/username/My Documents/PALTemplateData.xls'

csvfile = open("PALTemplateData.csv","rb")
csvout = open("PALTemplateDataOUT.csv","wb")
reader = csv.reader(csvfile)
writer = csv.writer(csvout)

changed = 0;

for row in reader:
    row[-1] = row[-1].replace('/?', '?')
    writer.writerow(row)                  #this is the line that's causing issues
    changed=changed+1

print('Total URLs changed:', changed)

edit: Für Ihre Referenz, das ist der neue vollen traceback für den interpreter:

Traceback (most recent call last):
  File "C:\Documents and Settings\g41092\My Documents\palScript.py", line 13, in <module>
    for row in reader:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
InformationsquelleAutor ignorantslut | 2009-06-19
Schreibe einen Kommentar