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

将非常规格式CSV文件拆分至多个CSV文件的技术方案咨询

非常规格式数据集拆分与读取解决方案

1. 先明确数据格式规则

取数据集的一小段样本,手动梳理以下关键规则:

  • 记录边界:每条记录的开始/结束标识(比如特定字符串、空行、固定行数)
  • 字段分隔:字段之间的分隔符(比如特殊符号|#|、固定字符长度、空格分隔)
  • 特殊情况:是否存在跨行记录、转义字符、注释行等

2. 用Python基础文件操作读取处理(无需依赖csv模块)

读取文件内容

先把整个文件读入内存(数据量过大的话可以逐行处理):

with open("your_dataset.txt", "r", encoding="utf-8") as f:
    raw_lines = f.readlines()

提取单条记录

根据你梳理的边界规则,把raw_lines拆分成独立记录:

  • 示例:如果每条记录以[START]开头,以[END]结尾
records = []
current_record = []
for line in raw_lines:
    stripped_line = line.strip()
    if stripped_line == "[START]":
        current_record = []
    elif stripped_line == "[END]":
        records.append(current_record)
    else:
        current_record.append(stripped_line)

解析记录字段

根据字段规则提取每个记录的字段:

  • 示例1:字段用;;分隔
parsed_records = []
for record in records:
    # 假设每条记录是一行字符串,直接拆分
    fields = record[0].split(";;")
    parsed_records.append(fields)
  • 示例2:固定长度字段(比如前10位是ID,接下来20位是名称)
parsed_records = []
for line in raw_lines:
    if line.startswith("[DATA]"):  # 跳过非数据行
        id_field = line[5:15].strip()  # 提取第5到15位的ID
        name_field = line[15:35].strip()  # 提取名称字段
        parsed_records.append([id_field, name_field])

3. 拆分数据集为多个文件

根据需求选择拆分逻辑(按记录数、按字段分组等):

按记录数批量拆分

batch_size = 1000  # 每个文件存1000条记录
for idx in range(0, len(parsed_records), batch_size):
    batch_data = parsed_records[idx:idx+batch_size]
    # 写入拆分后的文件
    with open(f"dataset_part_{idx//batch_size +1}.txt", "w", encoding="utf-8") as f:
        for fields in batch_data:
            # 按需要的格式写入,比如用逗号分隔字段
            f.write(",".join(fields) + "\n")

按字段值分组拆分

示例:按第一个字段(类别)拆分到不同文件

from collections import defaultdict

# 先按类别分组
grouped_data = defaultdict(list)
for fields in parsed_records:
    category = fields[0]
    grouped_data[category].append(fields)

# 每个类别写入单独文件
for category, data in grouped_data.items():
    with open(f"dataset_{category}.txt", "w", encoding="utf-8") as f:
        for fields in data:
            f.write(",".join(fields) + "\n")

4. 验证与调试

  • 先处理小样本数据:取前10条记录测试解析和拆分逻辑,打印结果确认正确性
  • 检查异常行:如果遇到不符合规则的行,添加判断跳过或单独记录,避免程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:01:46