如何在 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':
我想使用 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':