ฉันต้องการแคสต์ข้อมูลเช่นเดียว[1,2,'a','He said "what do you mean?"']
กับสตริงที่มีรูปแบบ CSV
โดยปกติจะใช้csv.writer()
สำหรับสิ่งนี้เพราะมันจัดการกับกรณี edge ที่บ้าคลั่งทั้งหมด (การหลบหนีด้วยลูกน้ำ, เครื่องหมายอัญประกาศ, ภาษาถิ่น 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
ไลบรารี