2015-10-25 81 views
1

我寫了下面的python代碼來讀取ID,年齡,性別,國家,從tsv文本文件註冊列。如何從tsv數據文件中分別讀取每列?

import csv 
IDs=[] 
Genders=[] 
Ages=[] 
Countrys=[] 
Registereds=[] 
with open('Sample data.txt','r') as f: 
    next(f) # skip headings 
    reader=csv.reader(f,delimiter='\t') 
    for ID,Gender,Age,Country,Registered in reader: 
     IDs.append(ID) 
     Genders.append(Gender) 
     Ages.append(Age) 
     Countrys.append(Country) 
     Registereds.append(Registered) 
    pass 

但它不工作,並拋出以下錯誤:

Traceback (most recent call last): 
    File "ext_col.py", line 34, in <module> 
    for ID,Gender,Age,Country,Registered in reader: 
ValueError: need more than 0 values to unpack 

文本文件已經過線100S以下數據:

ID Gender Age Country Registered 
user_000001 m  Japan Aug 13, 2006 
user_000002 f  Peru Feb 24, 2006 
user_000003 m 22 United States Oct 30, 2005 
user_000004 f   Apr 26, 2006 
user_000005 m  Bulgaria Jun 29, 2006 
user_000006  24 Russian Federation May 18, 2006 
user_000007 f  United States Jan 22, 2006 
user_000008 m 23 Slovakia Sep 28, 2006 
user_000009 f 19 United States Jan 13, 2007 
user_000010 m 19 Poland May 4, 200 

這僅僅是一小片來自該文本文件的數據。

更進一步如何將每列的數據存儲在單獨的文本文件中,以便隨後只需在必要時打開所需的列文件即可輕鬆在算法中使用它們?這實際上是我在這裏的最終目標。

在此先感謝。

回答

0
>>> import csv 
>>> with open('test.txt') as csvfile: 
...  reader = csv.DictReader(csvfile, delimiter='\t') 
...  for row in reader: 
...  # append your lists 
...   print(row['ID'], row['Gender']) 

的字典閱讀器使用的標題級別列名創建使用列標題爲關鍵的細胞作爲值的字典,和。

+0

太棒了!謝謝。此代碼的作用像魅力和其價值接受。 – VivekP20

+0

此外,如果我要將例如Gender的列的數據存儲在單獨的文本文件中而不會丟失原始格式,即我想保留列中的任何空白行,例如對於例如。對於給定的用戶,他的性別不存在於數據集文件中,那麼如果整個數據集的大小爲2.5 GB,我該如何有效地做到這一點? – VivekP20

+0

「高效」是一個很難的主題,沒有深入挖掘代碼庫。我只是檢查空字符串。 'if row ['Gender'] ==「」:#write a new line' – Busturdust

0

csv.reader()返回一個字符串列表,你的代碼需要一個元組。

這應該工作,而不是:

for row in reader: 
     IDs.append(row[0]) 
     Genders.append(row[1]) 
     Ages.append(row[2]) 
     Countrys.append(row[3]) 
     Registereds.append(row[4]) 
    pass 
+0

謝謝。我跟進了您指出的更改,但代碼再次引發錯誤,即IDs.append(row [0])IndexError:列表索引超出範圍。任何進一步的建議都會很棒。 – VivekP20

+0

@ VivekP20請顯示您的前10行數據文件,因爲它確實如此。 – LetzerWille

+0

我剛剛編輯了正確格式的數據集的問題。希望能幫助到你。 – VivekP20