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

使用Pandas清理并读取含冗余文本的大量CSV文件

批量清理并读取带首尾冗余文本的CSV文件

我有超过10000个CSV文件,所有文件首尾都存在冗余文本,必须先清理才能读取有效数据。以下是这类文件的示例,有效数据的表头为Student,id,add,div,rank:

SAMPLE FILE LTD

STUDENT NUMBERS

INFO OF ALL STUDENTS No :  from 27-Mar-2023 00:00:00 to 04-Apr-2023 00:00:00 and  from 05-Oct-2023 00:00:00 to 13-Oct-2023 00:00:00

Student,id,add,div,rank
ABC,12,USA,A,1
DEF,13,IND,C,2
XYZ,14,UK,E,3
PQR,15,DE,F,4


 This is System generated report, and needs no signature.

 14-Oct-2023 18:14:12

我找到的一种解决方案代码如下(已替换为中文注释):

# 读取文件直到找到目标标识,返回需要跳过的前置冗余行数
def get_rows_to_skip(file_name, filter_str):
    rows = 0
    # 使用with语句自动关闭文件,避免资源泄漏
    with open(file_name, 'r') as file:
        while True:
            line = file.readline()
            # 处理文件读取完毕仍未找到标识的情况
            if not line:
                return -1
            if filter_str in line:
                return rows
            rows += 1

def read_csv():
    file_name = "/Users/test/Desktop/student/students.csv"
    # 以表头中的"rank"为标识,确定需要跳过的前置行数
    skip_rows = get_rows_to_skip(file_name, "rank")
    if skip_rows == -1:
        print("文件中未找到有效表头")
        return
    # 跳过前置冗余行读取CSV
    df = pd.read_csv(file_name, skiprows=skip_rows)
    # 过滤末尾的冗余行(保留rank列不为空的有效数据)
    df = df[df['rank'].notna()]
    print("读取完成")

补充优化建议

  • 批量处理适配:针对10000个文件,可结合glob.glob遍历目标目录下所有CSV文件,循环调用读取逻辑
  • 异常防护:增加文件不存在、权限不足等异常捕获,避免批量处理中途中断
  • 末尾冗余精准定位:如果末尾冗余文本有固定标识(比如示例中的"This is System generated report"),可以模仿前置行数的逻辑找到结束行,只读取到该行之前的内容,比事后过滤更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:22:25