如何从tsv数据文件中单独读取每列?

时间:2015-10-25 18:10:51

标签: python parsing dataset tab-delimited-text

我编写了以下python代码来读取列,即ID,年龄,性别,国家,从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

文本文件包含超过100行的以下数据:

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

这只是该文本文件中的一小部分数据。

此外,我如何将每个列的数据存储在单独的文本文件中,以便以后只需在必要时打开所需的列文件,就可以轻松地在算法中使用它们?这实际上是我的最终目标。

提前致谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

finish()

Dict Reader使用标题级别列名称创建字典,使用列标题作为键,单元格作为值。