Quero lançar dados como [1,2,'a','He said "what do you mean?"']
uma string formatada em CSV.
Normalmente seria usado csv.writer()
para isso, porque ele lida com todos os casos extremos malucos (escape de vírgula, escape de aspas, dialetos CSV, etc.) O problema é que csv.writer()
espera a saída para um objeto de arquivo, não para uma string.
Minha solução atual é esta função um tanto hacky:
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
Alguém pode dar uma solução mais elegante que ainda lide bem com os casos extremos?
Edit: Veja como acabei fazendo isso:
def csv2string(data):
si = StringIO.StringIO()
cw = csv.writer(si)
cw.writerow(data)
return si.getvalue().strip('\r\n')
StringIO()
está naio
biblioteca.