如何从 tsv 数据文件中分别读取每一列?

How can I read each column separately from a tsv data file?

我编写了以下 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

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

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

提前致谢。

csv.reader() returns 一个字符串列表,您的代码需要一个元组。

这应该可以代替:

    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
>>> 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'])

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