Anführungszeichen in csv-Datei

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
joker21
User
Beiträge: 17
Registriert: Sonntag 14. Oktober 2007, 11:36

Sonntag 14. Oktober 2007, 11:46

Hallo,

ich füge mittels

Code: Alles auswählen

result.append(value)
Daten einer Liste hinzu, die dann mittels

Code: Alles auswählen

writer = csv.writer(csv_file)
writer.writerows(extract(source))
in eine csv-Datzei geschrieben werden.

Nun möchte ich gerne, dass die Daten alle in Anführungszeichen stehen, da z.T. Kommas in den Daten sind (und diese als csv-Trennzeichen sonst missverstanden werden). Das Ergebnis soll also etwa so aussehen:
"data1", "data2, und noch was"

Wenn ich aber die Daten einfach in Anführüngszeichen setze

Code: Alles auswählen

result.append('"' + value + '"')
sind statt einem immer drei Anführungszeichen vor und nach jeden Daten:
"""data1""", """data2, und noch was"""

Die Lösung ist wahrscheinlich simple, man muss sie nur wissen...

Gruß
Jochen
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Sonntag 14. Oktober 2007, 11:59

Warum nimmst du nicht ein anderes Trennzeichen als ein Komma?
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Sonntag 14. Oktober 2007, 12:06

joker21 hat geschrieben:Die Lösung ist wahrscheinlich simple, man muss sie nur wissen...
Hallo Jochen!

Stimmt ;-)

Code: Alles auswählen

>>> import csv
>>> from StringIO import StringIO
>>> f = StringIO()
>>> writer = csv.writer(f, quoting = csv.QUOTE_NONNUMERIC)
>>> writer.writerow([1, 2.0, "3", "hallo"])
>>> f.getvalue()
'1,2.0,"3","hallo"\r\n'
>>>
``csv.QUOTE_NONNUMERIC`` funktioniert aber erst seit Python 2.5 korrekt. Python 2.4 unterscheidet nicht korrekt zwischen Zahl und Text. Aber das ist in den meisten Fällen zum Glück egal. ;-)

mfg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
joker21
User
Beiträge: 17
Registriert: Sonntag 14. Oktober 2007, 11:36

Sonntag 14. Oktober 2007, 12:17

Ja, das war's schon! Danke schön!
Antworten