2014-09-25 53 views
4

新手程序員在這裏。我正在嘗試解析管道分隔的CSV文件,並將每個項目行(標題後面的每一行)存儲在單獨的List或Dictionary中。Python 2.7-存儲CSV的每一行作爲單獨的列表/字典

import csv 
with open('toverdpython.csv', 'rb') as toverd: 
    reader = csv.reader(toverd, delimiter='|', quoting=csv.QUOTE_NONE) 

    rownum = 0 
    i = 1 

    for row in reader: 
     #Save header row 
     if rownum == 0: 
      inputHeader = row 
     else: 
      inputRow = {} 
      inputRow[i] = row 
      i + 1 
      print(inputRow.items()) 


     rownum+=1 

    toverd.close() 

這是生成的輸出:

[(2, ['"Test 8"', '"Test 8"', '', '"Test 8"', 'IUGIGUGUI', 'A', 'EA', '602132312952', '2',  'Default', '', '', '', '', '', '"Test 8"', '6123142', 'US', '', '', '', '', '2121231234', '', 'A', '00002', '4600018168', '1', 'A', '0', 'USD', '10026178', '"KGIUGUGIGIU"', 'SADH', '', '', ''])] 
[(2, ['"Test 9"', '"Test 9"', '', '"Test 9"', 'BIGIUG802', 'A', 'EA', '6123124242', '2', 'Default', '', '', '', '', '', '"Test 9"', '3694498', 'US', '', '', '', '', '51124124'', 'A', '00002', '463325358', '1', 'A', '0', 'USD', '134345436178', '"MNONOINOIN"', 'SADAHRH', '', '', ''])] 

的數據是正確─但我有困難,告訴我是否與每次循環覆蓋我的信息。我嘗試閱讀清單和詞典,但我覺得我完全迷失了。

我的目標是讓我能夠將文檔的每一行存儲在一個單獨的數組中,比如inputRow1 [],InputRow2 []等,並且每行中的位置參考值如inputRow2 [3]應該返回「測試9」。任何指導將不勝感激,謝謝。

+0

不幸的是,你只是放棄每inputRow。你說你想要inputRow1 [],inputRow2 {},等等......但通常我們處理像inputRow [1] []等行的列表...是你想要什麼? – tdelaney 2014-09-25 03:35:54

回答

2

我想這是你想要的...

import csv 
with open('toverdpython.csv', 'rb') as toverd: 
    reader = csv.reader(toverd, delimiter='|', quoting=csv.QUOTE_NONE) 

    # get the header 
    inputHeader = next(reader)  

    # get the rest 
    inputRows = [row for row in reader] 

# just to vreify... 
print header 
for row in inputRows: 
    print ', '.join(row) 
+0

這正是我想要的 - 「閱讀器中的行」語法非常簡潔,我很難理解它在做什麼......非常感謝。 – 2014-09-25 04:08:16

+0

是的,列表解析可能令人費解,但很酷,以後炫耀給你的朋友。 – tdelaney 2014-09-25 04:11:23

+1

'[讀者行中的行]通常寫成'list(reader)'。 – DSM 2014-09-25 12:42:07

0

您正在使用inputRaw詞典,就像列表一樣,所以您最好使用列表,例如inputRaw = []

您需要在for循環之前放置inputRow = []否則您將在每次迭代中覆蓋它。

還在循環之前初始化i = 0,因爲列表基於零。

你可能想看看csv.DictReader在https://docs.python.org/2/library/csv.html#csv.DictReader

+0

謝謝,我一定會看看DictReader。 – 2014-09-25 04:08:47

相關問題