Je souhaite diffuser des données comme [1,2,'a','He said "what do you mean?"']une chaîne au format CSV.
Normalement, on utiliserait csv.writer()pour cela, car il gère tous les cas extrêmes (virgule, échappement de guillemets, dialectes CSV, etc.) csv.writer().
Ma solution actuelle est cette fonction quelque peu piratée:
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
Quelqu'un peut-il donner une solution plus élégante qui gère toujours bien les cas de bord?
Edit: Voici comment j'ai fini par le faire:
def csv2string(data):
si = StringIO.StringIO()
cw = csv.writer(si)
cw.writerow(data)
return si.getvalue().strip('\r\n')
StringIO()est dans laiobibliothèque.