CSV文件读取与条件筛选问题:仅打印row[0]为'295'的行
解决CSV文件筛选打印特定行的问题
我来帮你调整代码,让它只打印row[0]等于'295'的行,同时修复原代码里的几个小问题:
原代码的问题分析
- 你在循环里直接
print row,没有添加任何条件判断,所以会把文件里所有行都打印出来 try-except块放在循环外面,根本无法对每一行的处理逻辑生效;而且错误信息的字符串格式化写法有误(print "Error with row: " % row缺少占位符,应该改成print "Error with row: %s" % row)- 解构赋值的列表推导式逻辑混乱,
row [0] != '297'的条件放在这里完全不对,还可能导致列表长度不匹配,引发赋值失败
修正后的代码
import csv # 确保导入csv模块,如果你还没添加的话 csvfile = "your_file.csv" # 替换成你的实际CSV文件路径 # 用with语句打开文件,自动处理关闭操作,更安全 with open(csvfile, 'r') as f: reader = csv.reader(f) for row in reader: # 只处理row[0]等于'295'的行 if row[0] == '295': try: # 对当前行的所有元素解码,再解构赋值 location_id, vrm, valid_datetime = [x.decode('utf-8-sig') for x in row] # 打印原始行,或者你也可以打印解码后的字段:print(location_id, vrm, valid_datetime) print(row) except Exception as e: # 打印错误信息和出错的行,方便排查问题 print("Error with row: %s, error detail: %s" % (row, str(e)))
关键改进点
- 新增
if row[0] == '295'的判断逻辑,精准筛选你需要的行 - 将
try-except移到循环内部,对每一行的解码和赋值操作做异常捕获 - 用
with open(...)管理文件,避免手动关闭文件的遗漏风险 - 修复了错误信息的格式化方式,现在能清晰展示出错的行和具体错误原因
- 调整了解码的列表推导式,去掉了错误的条件判断,确保对当前行的所有元素正常解码
这样运行代码后,就只会打印row[0]等于'295'的行啦!
内容的提问来源于stack exchange,提问作者preethi
相关产品推荐
相关产品推荐

