2011-11-29 8 views
22

में क्षेत्रों के भीतर अल्पविराम के साथ फाइल मैं एक CSV फ़ाइल जो खेतों एक अल्पविराम है कि है पढ़ने की जरूरत है पढ़ें, तो मैं डबल जैसे क्षेत्रों जो अल्पविराम के होते हैं, उद्धृत किया है:सीएसवी अजगर

1, "text1,text2", "text3, text4", a, b, c 

लेकिन जब मैं, पायथन में फ़ाइल मैं अल्पविराम के द्वारा अलग क्षेत्रों मिल पढ़ने की कोशिश के रूप में निम्नलिखित:

row[0] = 1 
row[1] = text1 
row[2] = text2 
row[3] = text3 
row[4] = text4 
row[5] = a 
row[6] = b 
row[7] = c 

मैं सीएसवी निम्न कोड के साथ फाइल पढ़ रहा हूँ:

info = csv.reader(open('./info.csv')) 
for row in info : 
    print row[0] + " * " + row[1] ... 

क्या दो को उद्धृत फ़ील्ड पढ़ना संभव है जिसमें अल्पविराम शामिल है?

उत्तर

30

पायथन csv मॉड्यूल वास्तव में डिफ़ॉल्ट रूप से उद्धृत फ़ील्ड का समर्थन करता है। यहां आपकी समस्या यह है कि डिफ़ॉल्ट रूप से पायथन अंतरिक्ष को नहीं छोड़ता है, इसलिए आपको skipinitialspace=True का उपयोग करने की आवश्यकता है। ।

>>> s = StringIO.StringIO('1, "text1,text2", "text3, text4", a, b, c') 
>>> list(csv.reader(s, skipinitialspace=True)) 
[['1', 'text1,text2', 'text3, text4', 'a', 'b', 'c']] 
+5

'csv.Sniffer() सूंघ (रों) .__ dict__' भी यह संकेत मिलता है:' { '__doc__': कोई नहीं, '__module__': 'सीएसवी', 'नाम_': 'सूंघा ', ' सीमांकक ':', ', ' doublequote ': झूठे, ' lineterminator ':' \ r \ n ', ' quotechar ':' " ', ' के हवाले से ': 0, ' skipinitialspace ' : सच} ' – eumiro

संबंधित मुद्दे