Я хочу преобразовать данные вроде [1,2, 'a', 'He сказал «что вы имеете в виду?» ']
в строку в формате CSV.
Обычно для этого можно использовать csv.writer ()
, потому что он обрабатывает все безумные крайние случаи ( экранирование запятой, экранирование кавычек, диалекты CSV и т. д.). Уловка в том, что csv.writer ()
ожидает вывода в файловый объект, а не в строку.
Мое текущее решение таково. хакерская функция:
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
Может ли кто-нибудь дать более элегантное решение, которое все еще хорошо справляется с крайними случаями?
Изменить: Вот как я это сделал:
def csv2string(data):
si = StringIO.StringIO()
cw = csv.writer(si)
cw.writerow(data)
return si.getvalue().strip('\r\n')