我想使用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
答案 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':