不使用pandas、列表、enumerate如何从CSV文件读取指定行?
无第三方依赖的CSV指定行打印实现
现有代码问题梳理
- 传入的
count参数在函数内部被重新赋值为0,参数完全没有生效 - 循环内每次执行
row.pop(0)是移除每一行的第一个元素,并非你预期的移除整个表头行 - 循环结束后才执行
print(row)实际只会打印最后一行,返回值为函数本身而非读取结果,逻辑完全错误
符合要求的实现方案
下面的方案仅使用标准库csv,不依赖pandas、自定义列表存储全量内容、enumerate,仅通过自定义计数器实现指定行打印:
import csv FILE = 'internet_access.csv' def read_csv(file_path, target_row): # target_row为要打印的行号,跳过表头后从1开始计数,比如传入7就是表头后第7行 with open(file_path, 'r') as infile: internet_reader = csv.reader(infile, delimiter=',') # 跳过表头行 next(internet_reader) row_counter = 0 for row in internet_reader: row_counter += 1 if row_counter == target_row: # 打印目标行 print(row) # 找到后直接返回,不需要继续读取后续行 return row # 如果目标行号超出文件行数返回空 return None totals = read_csv(FILE, 7) print(totals)
逻辑说明
- 用
next()方法直接跳过表头行,不需要用pop操作处理 - 自定义
row_counter变量计数,不需要使用enumerate - 读取到目标行后直接返回,不会把全量文件内容存入列表,符合你的使用限制要求
- 如果目标行号超过文件实际行数,会返回None做兼容
内容的提问来源于stack exchange,提问作者Jo4368
相关产品推荐
相关产品推荐

