You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从CSV文件中筛选指定行并跳过其他行?

如何从CSV文件中提取特定行并跳过其他行?

嘿,这个需求挺常见的,我给你几个不同场景下的实现方案,你可以根据自己的技术栈挑最合适的:

方法一:使用Python内置csv模块(无额外依赖)

如果不想安装第三方库,用Python自带的csv模块就能轻松搞定。核心思路是遍历文件的每一行,记录行号,然后判断行号是否在你需要的范围内。

注意: 这里默认行号从1开始计数(对应文件里的第1行、第2行……),如果你的CSV第一行是表头,这个逻辑依然适用。

import csv

# 定义要保留的行号范围:3-37(因为3-9和10-37是连续的,合并成一个范围更高效)
target_rows = range(3, 38)  # range是左闭右开,所以结束值写38才能包含37行

with open('input.csv', 'r', newline='', encoding='utf-8') as infile, \
     open('output.csv', 'w', newline='', encoding='utf-8') as outfile:
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    
    # 用enumerate给每行加上行号,start=1让行号从1开始
    for row_num, row in enumerate(reader, start=1):
        if row_num in target_rows:
            writer.writerow(row)

如果你的需求是提取不连续的行范围(比如3-9和20-37),只需要把判断条件改成:

if row_num in range(3, 10) or row_num in range(20, 38):

方法二:使用Pandas(适合大型CSV或后续数据处理)

如果你平时常用Pandas做数据分析,这个方法会更简洁,尤其适合处理大文件或者需要对提取后的数据做进一步操作的场景:

import pandas as pd

# 读取CSV文件(如果没有表头,记得加header=None)
df = pd.read_csv('input.csv')

# Pandas的索引默认从0开始,所以文件的第3行对应索引2,第37行对应索引36
target_indices = range(2, 37)

# 筛选目标行并保存,index=False避免把索引写入输出文件
df.iloc[target_indices].to_csv('output.csv', index=False)

方法三:命令行工具awk(快速处理,无需写代码)

如果你不想写代码,用系统自带的awk工具可以快速完成提取,效率很高:

# 提取文件第3到37行,输出到output.csv
awk 'NR>=3 && NR<=37' input.csv > output.csv

NR是awk的内置变量,表示当前处理的行号,这条命令会直接把符合行号范围的内容写入输出文件。

内容的提问来源于stack exchange,提问作者PKPython

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:18:22