Python中CSV文件If条件判断失效问题求助
解决CSV文件If条件判断失效的问题
嘿,别担心,新手遇到这种小问题太正常啦!咱们先揪出代码里的问题,再一步步修正~
你的代码里的两个核心问题
- 混用两种读取方式导致读取混乱:你先用了
csv.DictReader处理文件,接着又用csv.reader去读同一个文件对象。而且header = next(csv_reader)已经移动了文件指针,后续csv.reader读取的内容根本不是你预期的那行数据。 - 数据类型不匹配:CSV文件里的所有内容默认都是字符串类型,你用
data[0][1] == 12345是拿字符串"12345"和整数12345对比,这俩肯定不相等,这就是条件不生效的关键!
修正后的代码方案(两种可选)
方案1:用csv.DictReader(更清晰,通过列名访问)
import csv with open('file_name.csv','r') as csv_file: # 指定列名,因为你的CSV没有表头行 columnnames = ['account_holder_name', 'account_number', 'account_balance'] csv_reader = csv.DictReader(csv_file, fieldnames=columnnames) # 遍历每一行(这里你的CSV只有一行数据) for row in csv_reader: # 将字符串类型的account_number转成整数再对比 if int(row['account_number']) == 12345: print(row['account_balance']) print("Good you accessed the balance")
方案2:用普通csv.reader(按索引访问)
import csv with open('file_name.csv','r') as csv_file: csv_reader = csv.reader(csv_file) for row in csv_reader: # 同样把字符串转成整数再判断 if int(row[1]) == 12345: print(row[2]) print("Good you accessed the balance")
额外小提示
如果你的CSV文件里有表头行(比如第一行是account_holder_name,account_number,account_balance),那不用指定fieldnames,csv.DictReader会自动把第一行作为列名,直接遍历就行啦!
内容的提问来源于stack exchange,提问作者jatink
相关产品推荐
相关产品推荐

