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

How to read a row one by one using for loop in python

我想使用 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    

简单错误:试试这个

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

如果您没有在 csv 文件中指定 header,请尝试此操作

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

如果文件的第一行是 header(姓名、年龄、出生日期),则使用以下内容


    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
</pre>

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

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

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

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

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

我尝试了您的代码和文件,但出现了错误。 然后我用逗号替换了 csv 文件中的制表符,并将 "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':