Ich möchte Daten wie [1,2,'a','He said "what do you mean?"']
in eine CSV-formatierte Zeichenfolge umwandeln.
Normalerweise würde man csv.writer()
dies verwenden, da es alle verrückten Randfälle behandelt (Komma-Escape, Anführungszeichen-Escape, CSV-Dialekte usw.). Der Haken ist, dass csv.writer()
erwartet wird, dass die Ausgabe an ein Dateiobjekt und nicht an eine Zeichenfolge erfolgt.
Meine aktuelle Lösung ist diese etwas hackige Funktion:
def CSV_String_Writeline(data):
class Dummy_Writer:
def write(self,instring):
self.outstring = instring.strip("\r\n")
dw = Dummy_Writer()
csv_w = csv.writer( dw )
csv_w.writerow(data)
return dw.outstring
Kann jemand eine elegantere Lösung geben, die die Randfälle immer noch gut handhabt?
Edit: So bin ich dazu gekommen:
def csv2string(data):
si = StringIO.StringIO()
cw = csv.writer(si)
cw.writerow(data)
return si.getvalue().strip('\r\n')
StringIO()
befindet sich in derio
Bibliothek.