如何在python中使用for循环逐个读取一行

时间:2015-03-25 06:55:29

标签: python csv row

我想使用For循环并逐个打印一行,无论我需要什么。 这是我的代码:

import csv
with open("details.csv") as csvFile:
    reader = csv.DictReader(csvFile)
    for row in reader:

        if['age'] == '21':
            print(row['Name'], row['age'], row['DOB'])
        else:
            continue

在这里,我想要运行for循环直到6次,并且我还想要特定数据的年龄是谁' 21',该人详细信息我只想要打印,如果它不是' 21'然后跳过这一行。但是我的代码并没有像我想的那样完成。 谁能帮我..? 谢谢:))

我的csv是:

Name    age dob 
Arun    21  01/08/93    
Banni   20  05/11/94    
charan  23  23/03/92    
nani    21  04/05/93    

4 个答案:

答案 0 :(得分:3)

简单错误:试试这个

import csv
with open("details.csv") as csvFile:
    reader = csv.DictReader(csvFile)
    for row in reader: 
        if row['age'].strip() == '21': #error in this line
            print(row['Name'], row['age'], row['DOB'])
        else:
            continue

答案 1 :(得分:0)

如果您未在csv文件中指定标题

,请尝试此操作
import csv
import sys

f = open("File_Name.csv", 'rt') #open the file reading 
print "Name\tAge\tDOB"
try:
    reader = csv.reader(f)
    for row in reader:
        if row[1] == '21':     #Check the condition
            print "%s\t%s\t%s" %(row[0],row[1],row[2]) #print the columns
        else:
            continue
finally:
    f.close()                 #close the file at the end

如果文件的标题为第一行(Name,Age,DOB),则使用以下内容


    import csv #import csv package
    with open("details.csv") as csvFile: #open the file 
        reader = csv.DictReader(csvFile)
        for row in reader: #iterate the file
            if row['age'].strip() == '21': #check the condition
                print(row['Name'], row['age'], row['DOB'])
            else: #skip if not satisfies the condition
                continue

答案 2 :(得分:0)

默认情况下,DictReader使用逗号,作为两个字段之间的分隔符,但您的csv文件使用制表符。

如果您不想更改csv文件,解决方案是将DictReader的创建更改为

reader = csv.DictReader(f, delimiter='\t')

接下来将行if['age'] == '21':更改为if row['age'] == '21':

最后row['DOB']应为row['dob'],因为字段名称区分大小写。

答案 3 :(得分:0)

我尝试了您的代码和您的文件并出错了。 然后我用逗号替换了你的csv文件中的选项卡并且大写了#34; dob"到" DOB":

Name,age,DOB
Arun,21,01/08/93
Banni,20,05/11/94
charan,23,23/03/92
nani,21,04/05/93

然后输出正确:

>>> 
Arun 21 01/08/93
nani 21 04/05/93   
>>> 

当然我将第5行更改为if row['age'] == '21':