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 laio
bibliothèque.