मैं [1,2,'a','He said "what do you mean?"']
CSV-स्वरूपित स्ट्रिंग की तरह डेटा डालना चाहता हूं ।
आम तौर पर कोई भी इसके लिए उपयोग करेगा csv.writer()
, क्योंकि यह सभी पागल किनारे के मामलों (अल्पविराम से बचना, उद्धरण चिह्न से बचना, सीएसवी बोली, आदि) को संभालता है। पकड़ यह है कि 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
लाइब्रेरी में है।