如何在python中分别读取csv文件的两个字段?

时间:2015-10-14 12:14:50

标签: python csv

我想分别读取csv文件的两列,但是当我编写下面的代码时,python只显示第一列而第二列没有,但在csv文件中第二列也有很多行。

import csv
import pprint

f = open("arachnid.csv", 'r')
read = csv.DictReader(f)
for i in range(3):
    read.next()

for i in read:
    pprint.pprint(i["binomialAuthority_label"])

for i in read:
    pprint.pprint(i["rdf-schema#label"])

2 个答案:

答案 0 :(得分:1)

这样做的原因是,当您使用DictReader时,它将创建所谓的迭代器/生成器。所以,当你迭代它一次,你就不能再次以你的方式迭代它。

如果你想保持逻辑不变,你实际上可以在文件阅读器对象上调用seek(0)来重置它的位置:

f.seek(0)

下次迭代你的dictreader对象时,它会给你你想要的东西。因此,您感兴趣的代码部分将是:

for i in read:
    pprint.pprint(i["binomialAuthority_label"])

# This is where you set your seek(0) before the second loop
f.seek(0)

for i in read:
    pprint.pprint(i['rdf-schema#label'])

答案 1 :(得分:0)

您的DictReader实例在第一次for i in read:循环后就会耗尽,所以当您尝试进行第二次循环时,没有任何内容可以迭代。

您想要做什么,一旦您第一次迭代CSV,您可以找回您的文件,然后创建DictReader的新实例并重新开始。您需要创建一个新的DictReader实例,否则您需要手动跳过标题行。

f = open(filename)
read = csv.DictReader(f)
for i in read:
    print i

f.seek(0)
read = csv.DictReader(f)
for i in read:
    print i