Python CSV Writer

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
HightronicDesign
User
Beiträge: 9
Registriert: Freitag 20. Februar 2015, 00:41

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
HightronicDesign
User
Beiträge: 9
Registriert: Freitag 20. Februar 2015, 00:41

Danke dir.
An join habe ich nicht gedacht. Hat funktioniert


Gruß
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten