Seite 1 von 1

Python CSV Writer

Verfasst: Donnerstag 22. Oktober 2015, 13:10
von HightronicDesign
HI leute,

kann mir jemand sagen wie ich dem csv writer sagen kann dass er mir nicht in die Datei schreiben soll sondern dass ich die Ausgabe irgenwo zwischenspeichern kann ?

So habe ich es

Code: Alles auswählen

wr = csv.writer(export, quoting=False, delimiter=';')
und wenn ich dann wr.writerow(mylist) sage, dann wird schon mylist als csv in die datei gespeichert.

Ich möchte es aber weiter verarbeiten als Comma Separated Line und es konkret in meinem Fall jetzt mit einfachen Anführungszeichen umgebeben, also dass es dann so aussieht 'Eintrag1;Eintrag2;Eintrag3'

Danke euch schon mal

Re: Python CSV Writer

Verfasst: Donnerstag 22. Oktober 2015, 13:20
von cofi
Das geht nicht. Du kannst entweder `writer` so wrappen, dass `writerow` entsprechend vor und nach dem eigentlichen Aufruf Quotes einfuegt oder du bearbeitest du erzeugte danach komplett.

Da du aber keine Quotes benutzt, kannst du wohl ganz auf csv verzichten und einfach

Code: Alles auswählen

export.write("'{}\n'".format(';'.join(mylist))
benutzen.

Re: Python CSV Writer

Verfasst: Donnerstag 22. Oktober 2015, 13:24
von HightronicDesign
Danke dir.
An join habe ich nicht gedacht. Hat funktioniert


Gruß

Re: Python CSV Writer

Verfasst: Donnerstag 22. Oktober 2015, 13:48
von Hyperion
HightronicDesign hat geschrieben: kann mir jemand sagen wie ich dem csv writer sagen kann dass er mir nicht in die Datei schreiben soll sondern dass ich die Ausgabe irgenwo zwischenspeichern kann ?
Auch wenn das offenbar gar nicht das eigentliche Problem war, möchte ich hier dennoch mal die Text basierte Implementierung von ``file``-Objekten namens ``io.StringIO`` erwähnen, mit dem man sehr wohl den ``csv.writer`` nutzen kann, *ohne* dass die Daten in einer Datei landen, sondern eben in einem String:

Code: Alles auswählen

data = ((1, "foo"), (2, "bar"))
output = io.StringIO()
writer = csv.writer(output, delimiter=';')
writer.writerows(data)
output.getvalue()
> '1;foo\r\n2;bar\r\n'
Wenn man also auf ``csv`` nicht verzichten möchte, kann man das Modul durchaus nutzen, ohne einen Umweg über das Schreiben und Lesen einer Datei zu gehen :-)

@HightronicDesign: Das ganze klingt ein wenig untypisch... Daten serialisieren, aber das serialisierte dann doch irgend wie weiterverarbeiten... Evtl. kannst Du mal das "big picture" schildern? Vielleicht eröffnen sich daraus ein sinnvolleres Vorgehen.