Je veux lancer des données comme [1,2,'a','He said "what do you mean?"']
en une chaîne de caractères au format CSV.
Normalement, on utilise csv.writer()
pour cela, parce qu'il gère tous les cas particuliers (échappement des virgules, échappement des guillemets, dialectes de CSV, etc. csv.writer()
s'attend à ce que la sortie se fasse vers un objet fichier, et non vers une chaîne de caractères.
Ma solution actuelle est cette fonction un peu bricolé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 proposer une solution plus élégante qui gère bien les cas limites ?
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')