查询CSV文件中年龄>30的记录重复显示,如何解决?
解决CSV记录重复显示并筛选年龄大于30的问题
原代码的问题
- 完全没有实现年龄大于30的筛选逻辑
- 每次读取一行就存入
rec列表,接着内层循环遍历range(1, len(rec))打印索引,导致每新增一行就重复打印之前所有行的索引,直接造成重复输出
修正后的代码
import csv def dispcond(): # 用with语句自动管理文件,无需手动关闭 with open('csv2.csv', 'r') as f: empdata = csv.reader(f) # 跳过CSV表头(如果你的文件没有表头,删除这行即可) next(empdata) for row in empdata: # 假设年龄在第二列(索引为1),请根据你的CSV实际结构调整索引 try: age = int(row[1]) if age > 30: print(row) except ValueError: # 处理年龄字段不是数字的异常情况 print(f"无效年龄记录:{row}") dispcond()
关键改进说明
- 直接遍历CSV读取器的每一行,无需先存入列表再二次遍历,从根源避免重复输出
- 加入了年龄转换与筛选逻辑,只输出年龄大于30的记录
- 使用
with语句管理文件,自动处理文件关闭,代码更安全简洁 - 增加异常处理,避免因年龄字段非数字导致程序崩溃
内容的提问来源于stack exchange,提问作者Mayank Kumar
相关产品推荐
相关产品推荐

