Как мне записать данные в формат CSV в виде строки (не файла)?

Я хочу преобразовать данные вроде [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')
96
задан Georgy 29 April 2019 в 14:25
поделиться