2010-03-09 71 views
1

我正在使用csv.reader讀取文件,但它給了我整個文件。如何從python中的csv文件中獲取數據

file_data = self.request.get('file_in'); 
file_Reader = csv.reader(file_data); 
for fields in file_Reader: 

我一次只需要一行,並將該行的數據分開。

ex: filedata = name,sal,dept 
       x,12000,it 
o\p= 
name 
sal 
dept 
. 
. 
. 

回答

1

它看起來像你試圖直接傳遞一串數據到csv.reader()。它期望像列表或文件句柄這樣的可迭代對象。 csv module的文檔提到了這一點。所以你可能想在將它傳遞給csv.reader之前將它們沿着換行符分開。

import csv 
file_data = self.request.get('file_in') 
file_data_list = file_data.split('\n') 
file_Reader = csv.reader(file_data_list) 
for fields in file_Reader: 
    print row 

希望有幫助。

+0

是的,它的工作原理。 感謝您的幫助。 – Rahul99 2010-03-10 05:39:35

+0

這只是打印行。我們如何獲得每一個人的價值,一對一?工作代碼示例? – andrebruton 2012-08-11 14:12:31

1

>>> import csv 
>>> spamReader = csv.reader(open('eggs.csv'), delimiter=' ', quotechar='|') 
>>> for row in spamReader: 
...  print ', '.join(row) 
Spam, Spam, Spam, Spam, Spam, Baked Beans 
Spam, Lovely Spam, Wonderful Spam 

the manual

希望幫助採取...

+0

線索= - 行是一個字符串有一個列表... – 2010-03-09 13:38:44

+0

+1即使沒有別的但是Monty Python參考。 – 2010-03-09 13:42:24

+0

它在一行中給我整個文件 – Rahul99 2010-03-09 13:46:08

0

爲什麼不能做手工?

for line in fd: 
     foo, bar, baz = line.split(";") 
+3

雖然不會像引用那樣處理事情,但是 - 如果csv中的數據本身可能包含逗號,則需要哪些內容...... – 2010-03-09 17:10:22

+0

提示爲+1。這是一種常見的速度與舒適性之間的折衷。 – Philip 2010-03-09 20:09:24

0

通常使用的分隔符是「」我已經映射數據到X,Y變量

import csv 
x = [] 
y= [] 
with open('FileName.csv','r') as csvfile: 
    plot=csv.reader(csvfile,delimiter=',') 
for row in plot: 
    x.append(int(row[0])) 
    y.append(int(row[1])) 

plt.bar(x,y,label='name') 
相關問題