Seite 1 von 1

Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 11:19
von BaseFloor
Hi ich bin Anfänger und stehe bei einem simplen Code vor einem Problem. Ich möchte ein bestimmtes Wort aus einer CSV
ändern. Und möchte den Code so halten, dass man auch evtl mehrere Wörter ändert.
Kann mir jemand weiter helfen ?

Ich habe den Code soweit:


import csv

f = open('C:\\Users\\Continental\\Desktop\\Replace_Test\\Testreplace.csv')
csv_f = csv.reader(f)

g = open('C:\\Users\\Continental\\Desktop\\Replace_Test\\Testreplace.csv')
csv_g = csv.writer(g)


findlist = ['zu ersetztendes Wort']
replacelist = ['Ersatz']


#der Funktionscode ?:
def findReplace(find,replace):
s = f.read()
for item, replacement in zip(findlist,replacelist):
s = s.replace(item,replacement)
g.write(s)

for row in csv_f:
print(row)

f.close()
g.close()

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 11:58
von noisefloor
Hallo,

wie ist denn dein konkretes Problem? Du arbeitest doch schon mit Listen, in die du mehrere Wörter eintragen könntest.

Problematisch könnte nur sein, dass du die gleiche Datei zum Lesen und Schreiben öffnest. Müsstest du mal ausprobieren, ob es da unerwünschte Seiteeffekte gibt.

Gruß, noisefloor

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 12:19
von __deets__
Das mit einer Datei gleichzeitig zum lesen & schreiben geht 100% in die Hose. Das solltest du nacheinander machen. Ggf in eine temporäre Datei schreiben und dann umbenennen, oder einfach alles in den Speicher lesen.

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 13:19
von Sirius3
@BaseFloor: Du hast schon Code. Was gefällt Dir daran nicht? Tut er das, was Du erwartest? Wenn nein, was passiert?

Generell: Funktionen sollten alles was sie brauchen per Parameter bekommen. In findReplace fallen `f` und `g` vom Himmel. Das sind auch keine guten Namen.

Du schreibst von einer csv-Datei. Welche Relevanz hat das? Willst Du nur ganze Zellen ersetzen oder wirklich Wörter?

`g` ist eine Datei, die zum Lesen geöffnet wurde, da kann man nichts reinschreiben. findReplace sollte `find_replace` oder gleich `replace_words` heißen.

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 14:10
von BaseFloor
ich möchte strings aus einer CSV finden und dann ersetzten. die ersetzte CSV-Datei soll einen neuen Namen bekommen.
Wie würde denn am besten der Code aussehen ?

a) um einen String zu suchen und zu ersetzen

b) mehrere strings zu ersetzen ?

kann mir da jmd helfen ?

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 14:33
von Sirius3
@BaseFloor: Willst Du nur ganze Zellen ersetzen oder Dinge innerhalb von Zellen?

An welcher Stelle kommst Du nicht weiter? Was ist Deine konkrete Frage?

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 14:50
von BaseFloor
ich möchte nur mindestens einen String innerhalb der Zeilen ändern.
Ich glaube der Code dafür an sich ist nur wenige Zeilen lang.

Meine konkrete Frage wäre: ob jmd einen gesamten Code Vorschlag dafür hätte.

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 15:18
von Sirius3
@BaseFloor: nein, das hat niemand, weil das hier kein kostenloser Programmierservice ist. Du mußt Dich selbst mit dem Problem auseinandersetzen, es in verschiedene Teilaufgaben aufteilen (ein guter Anfang ist immer die Aufteilung in Eingabe, Verarbeitung und Ausgabe). Wenn Du wo nicht weiter kommst, konkrete Frage stellen, mit Beispiel, Fehlermeldung, etc.

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 15:24
von kbr
@BaseFloor: Deine konkrete Frage ist, ob jemand das für Dich schreiben möchte. Kann man ja versuchen. Falls Du es selbst können möchtest, lese erst einmal Text aus einer Datei ein und gebe diesen wieder aus. Dann versuche den auszugebenden Text zu ändern. Wenn das klappt, schreibe ihn in eine neue Datei. So kommst Du voran.

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 16:25
von BaseFloor
okay
ich habe den Code erstmal reduziert:

import csv
f = open('path','r')
content = csv_reader(f)

for row in content:
print(row)

f.close()

Damit zeige ich den Inhalt schonmal an.
meine konkrete Frage ist dann erstmal:
Wie kann ich in der Anzeige einen bestimmten String ersetzen?

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 16:50
von DasIch
Generell kann man eine Datei nicht verändern. Du liest einfach die existierende ein und erzeugst eine neue mit den Änderungen die du haben willst.

Re: Strings in einer CSV ändern

Verfasst: Donnerstag 16. November 2017, 16:52
von Sirius3
@BaseFloor: wie man Strings ersetzt, weißt Du schon: `replace`. Da row eine Liste ist, mußt Du replace auf jedes Element der Liste anwenden.