Tôi muốn truyền dữ liệu [1,2,'a','He said "what do you mean?"']
sang một chuỗi có định dạng CSV.
Thông thường người ta sẽ sử dụng csv.writer()
cho điều này, bởi vì nó xử lý tất cả các trường hợp cạnh điên rồ (thoát dấu phẩy, thoát dấu ngoặc kép, phương ngữ CSV, v.v.) Bắt được csv.writer()
mong đợi xuất ra đối tượng tệp chứ không phải chuỗi.
Giải pháp hiện tại của tôi là chức năng hơi hack này:
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
Bất cứ ai có thể đưa ra một giải pháp thanh lịch hơn mà vẫn xử lý tốt các trường hợp cạnh?
Chỉnh sửa: Đây là cách tôi đã thực hiện nó:
def csv2string(data):
si = StringIO.StringIO()
cw = csv.writer(si)
cw.writerow(data)
return si.getvalue().strip('\r\n')
StringIO()
nằm trongio
thư viện.