2015-05-29 70 views
0

這是我目前遇到的一些問題的一小段應用程序。從無對象的對象訪問python成員

import csv 
with open('eggs.csv', 'rb') as csvfile: 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     print(row['first_name'], row['cat']) 
     print(row[1]) 

應用程序部分運行正常,但沒有問題,但我想通過第i個元素或通過數值訪問'行'中的每個值。

但是,這似乎沒有按預期發揮作用。

有沒有一種特定的方式,我應該這樣做,以訪問成員項目,而不必直接調用他們的列名稱。

幫助和澄清表示讚賞。

+3

不要使用'DictReader()',如果你想要的是一個列表的列表,然後使用'csv.reader()' – Jkdc

+0

我下面假設你要使用這兩個鍵和索引,但是如果你只*想要索引@Jkdc是正確的,只需使用'reader'。 – jonrsharpe

+0

謝謝你們。偉大的洞察力和幫助我分配。 – andrew

回答

4

csv模塊讓你從文件的每行的數據存取的兩大方法:

  1. 通過索引,使用reader;或
  2. 按鍵,使用DictReader

但是,請注意,DictReader實例有一個fieldnames屬性,它是「序列,其元素,以便輸入數據的字段相關聯的」,所以從指數轉換成鍵,您可以使用:

row[reader.fieldnames[1]] 
+0

這正是我所期待的。謝謝你的澄清和點答案! – andrew

+0

@andrew http://stackoverflow.com/help/someone-answers – jonrsharpe