Я хочу передати такі дані, як [1,2,'a','He said "what do you mean?"']
у формат 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')
StringIO()
знаходиться вio
бібліотеці.