如何从 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 作为键,单元格作为值。
我编写了以下 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 作为键,单元格作为值。