2016-04-29 53 views
1

我有几个CSV文件,其中包含有关不同用户的信息。每个文件都有3或4列,第一行是标题和下面的相应信息。如:按标题解析CSV文件

Username FirstName LastName Occupation 
JSmith12 John  Smith  Staff 

一些列的顺序错误或CSV的一半丢失的文件,所以我不能简单地做row.split(“”)[0]让所有的所有CSV文件中的用户名。

这里我的问题是:我将如何能够通过标题标题而不是按行读取和读取所有列信息。

回答

1

考虑使用该DictReader class

$ cat test.csv 
Username,FirstName,LastName,Occupation 
JSmith12,John,Smith,Staff 
$ python 
>>> import csv 
>>> 
>>> with open("test.csv") as f: 
...  reader = csv.DictReader(f) 
...  for row in reader: 
...   print(row) 
... 
{'Username': 'JSmith12', 'LastName': 'Smith', 'FirstName': 'John', 'Occupation': 'Staff'} 

row将是其中关键是从CSV文件头中提取的字典。

+0

谢谢。但是,我怎样才能一次读一列?我尝试打印行['用户名'],它给了我所有的用户名,但也给我一个回溯错误。此外,当我尝试占领时,它不打印任何东西,但另一个错误 – deaddeaddeads

0

Python标准库中的csvlibrary包含一个名为DictReader的类,它可以实现您想要的功能。