2013-04-23 65 views
1

我只是玩弄類和方法作爲學習練習。鍛鍊CSV中有多少列?

我正在努力創建的方法是一個新的方法,它計算出CSV中有多少列。

如何鍛鍊CSV中有多少列?

我的課到目前爲止,(高興給你指出,這也是錯誤)

import csv 

class CSV: 


    def __init__(self, file=None): 
     self.file = file 

    def read_file(self): 
     data = [] 
     file_read = csv.reader(self.file) 
     for row in file_read: 
      data.append(row) 
     return data 

    def get_row_count(self): 
     return len(self.read_file()) 

    def get_data(self, rows=1): 
     data = self.read_file() 

     return data[:rows] 

回答

2

我能想到的最簡單的方法就是抓住你的csv的第一行並返回它的長度。 CSV文件實際上不能讀取它們的長度,因此首先必須將行放入數組中。我會打電話給你read_file()函數來獲取數據作爲數組,並採取的第一行:

def get_column_number(self): 
    new_data = self.read_file() 
    return len(new_data[0]) 
+0

這會給你的字符數,而不是列數 – mattg 2013-04-23 15:04:47

+0

不,它會得到你的列數...一個csv是2維... 'len(file)'會給你多少行,'len(file [0])'會給你多少列,如果你真的想要特定列中的字符數量,使用'len(file [行,列])' – 2013-04-23 15:09:07

+0

不錯!有趣的。 – Prometheus 2013-04-23 15:11:01

4

如果你確保所有的行都會有相同的列數,那麼你可以簡單地閱讀第一行並取其長度:

self.file_read = csv.reader(self.file) 
self.columns = len(self.file_read.next()) 

請注意,.next()消耗一行。 (如果使用Python 3,你會這樣做len(next(self.file_read))

+0

你實際上不能採用csv文件的'len()'......你需要先把它放在一個數組中 – 2013-04-23 15:40:10

+0

@RyanSaxe:我沒有采用CSV文件的len()。 – 2013-04-23 15:42:38

+0

'self.file_read'是一個csv文件...不是嗎? – 2013-04-23 15:45:20