2016-03-22 6 views
1

, Guter TagWie ein Wort in einer CSV-Datei in bestimmten Spalt mit Python

ersetzen Ich habe versucht, ein Wort in einer bestimmten Spalte zu ändern, Index verwendet wird, in einer CSV-Datei, aber es wird nicht geändert.

Mein Code, den ich zu verwenden versucht:

import csv 

with open('INPUT.CSV', 'r') as file1, open('OUTPUT.csv','w',newline='') as file2: 
    reader = csv.reader(file1, delimiter=',') 
    writer = csv.writer(outfile, delimiter=',') 

    for row in reader: 
     row[0].replace('word','changed word')# I want to replace in first column=row[0] 'word' with 'changed word' 
     writer.writerow(row) 

Die Ausgabedatei ist auch mit dem Eingang, geändert nicht.

Kann mir jemand auf diese Weise helfen? Vielen Dank im Voraus!

Antwort

0

Ein Arbeitsbeispiel wäre besser (Ausgang ist offen, wie file2 aber Schriftsteller gegeben outfile)

Aber in jedem Fall Ihr Problem ist replace

  • replace eine Kopie der Zeichenfolge zurück (mit Fassung Text, wenn das Kriterium übereinstimmt)

Aber Sie verwerfen den zurückgegebenen Wert. Sie verändern sich eigentlich nichts in row[0]

Lösung:

replaced = row[0].replace('word','changed word') # I want to replace in first column=row[0] 'word' with 'changed word' 
row[0] = replaced 
writer.writerow(row) 
+0

Vielen Dank @mementum für Ihre Lösung ... Ich habe den Code mit ihm versucht, aber es scheint, dass die Änderung nicht nur in der bestimmten Zeile (Zeile [x]) erfolgt, ersetzt alle gefundenen Übereinstimmungen ... Könnte so etwas getan werden? –

0

row[0].replace() ersetzt nicht alles in der Reihe [0]. Vom docstring:

S.replace (alt, neu [, count]) -> string

Return eine Kopie der Zeichenfolge S mit allen Vorkommen von Teilzeichen alten durch neue ersetzt. Wenn das optionale Argument count angegeben ist, werden nur die ersten Zählereignisse ersetzt.

Wenn Sie den Wert von row[0] ändern wollen, müssen Sie so etwas wie row[0] = new_value.

Verwandte Themen