2013-07-19 50 views
0

我有一個csv文件。每列表示一個參數,並且包含幾個重複數百次的值(例如1,2,3,5)。 我想寫一個python程序,它讀取每一列,並在字典{column_header:list_numbers}中存儲其內容(不重複數字)。獲取csv文件的元素

我試圖適應example given in the python documentation

def getlist(file): 
    content = dict() 
    with open(file, newline = '') as inp: 
     my_reader = reader(inp, delimiter = ' ') 
     for col in zip(*my_reader): 
      l = [] 
      for k in col: 
       if k not in l: 
        l.append(k) 
       print(k) # for debugging purposes 
      content[col[0]] = l 

我期待,通過印刷K,以查看該列的每個元素。相反,我一次只能看到幾列。

任何有關錯誤的想法?

+0

是爲了重要嗎?或者一套足夠了? –

+0

訂單很重要 – bigTree

回答

2

看起來你幾乎在那裏。我會使用一個set檢測重複的數字(更有效):

def getlist(file): 
    content = {} 
    with open(file, newline = '') as inp: 
     my_reader = reader(inp, delimiter = ' ') 
     for col in zip(*my_reader): 
      content[col[0]] = l = [] 
      seen = set() 
      for k in col[1:]: 
       if k not in seen: 
        l.append(k) 
        seen.add(k) 
    return content 

確保你得到你的分隔符的權利;如果上述不適用於你,那麼print()可能會告訴你整個與分隔符仍在其中,作爲字符串。

說,你的文件使用,作爲分隔符代替,輸出將類似於:

{'a,b,c,d': ['0,1,2,3', '1,2,3,4']} 

在配置正確的分隔符會給你:

{'d': ['3', '4'], 'c': ['2', '3'], 'b': ['1', '2'], 'a': ['0', '1']} 
1

請問下面的python腳本適合你嗎?

import csv 
test_file = 'test.csv' 
csv_file = csv.DictReader(open(test_file, 'rb'), delimiter=',') 

for line in csv_file: 
    print line['x']