2009-07-05 11 views
7

मैं सिर्फ अजगर में सीएसवी घटक का परीक्षण कर रहा हूँ, और मैं इसके साथ कुछ परेशानी हो रही हूँ।अजगर सीएसवी सवाल

मेरे पास एक मानक मानक सीएसवी स्ट्रिंग है, और डिफ़ॉल्ट विकल्प सभी मेरे परीक्षण के साथ फिट बैठते हैं, लेकिन परिणाम पंक्ति में 1, 2, 3, 4 समूह और 5, 6, 7, 8 में समूह नहीं होना चाहिए एक पंक्ति?

धन्यवाद प्रदान की किसी भी ज्ञान के लिए एक बहुत!

 
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39) 
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import csv 
>>> c = "1, 2, 3, 4\n 5, 6, 7, 8\n" 
>>> test = csv.reader(c) 
>>> for t in test: 
...  print t 
... 
['1'] 
['', ''] 
[' '] 
['2'] 
['', ''] 
[' '] 
['3'] 
['', ''] 
[' '] 
['4'] 
[] 
[' '] 
['5'] 
['', ''] 
[' '] 
['6'] 
['', ''] 
[' '] 
['7'] 
['', ''] 
[' '] 
['8'] 
[] 
>>> 
+0

ध्यान दें कि मैंने इसे नए के बजाय बंद कर दिया है क्योंकि दूसरे के उत्तर यहां उपयोगी हैं, लेकिन अन्य तरीकों से इतना आसान नहीं है। यह अभी भी मौलिकता का बैज हो जाता है। – Veedrac

उत्तर

8

csv.reader एक iterable की उम्मीद है। आपने इसे "1, 2, 3, 4\n 5, 6, 7, 8\n" दिया; पुनरावृत्ति पात्रों का उत्पादन करता है। इसे देने का प्रयास करें ["1, 2, 3, 4 \ n", "5, 6, 7, 8 \ n"] - पुनरावृत्ति लाइनों का उत्पादन करेगी।

3

csv.reader लेता है एक iterable या इटरेटर लौटने लाइनों, the docs देखते हैं। आप इसे एक स्ट्रिंग पास कर रहे हैं, जो एक पुनरावर्तनीय एकल वर्ण है।

तो, csv.reader(c.splitlines()) या इसी तरह के निर्माणों का उपयोग करें!

2

इसे और अधिक फ़ाइल की तरह इस कोशिश बनाने के लिए।

import StringIO 
c= StringIO.StringIO("1, 2, 3, 4\n 5, 6, 7, 8\n") 

अब सी फ़ाइल की तरह दिखता है। एक फ़ाइल वह है जिसे आप सीएसवी के साथ सबसे अधिक (यदि नहीं सभी) के साथ उपयोग करते हैं।