You need to enable JavaScript to run this app. Pandas读取固定键值结构多TXT语料生成对应列DataFrame的方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

Pandas读取固定键值结构多TXT语料生成对应列DataFrame的方法咨询

Pandas批量解析固定格式TXT语料生成结构化DataFrame的实现方法

你手头的语料为多份独立TXT文件,单份文件严格遵循逐行字段名:字段值的固定结构,单文件格式示例如下:

TITLE: 对应标题内容
URL: 对应链接地址
META: 对应元信息
DATE: 对应发布日期
AUTHOR(S): 对应作者信息
TEXT: 对应文本正文

目标是批量读取所有文件,生成包含title、url、meta、date、author、text对应列的结构化DataFrame。

核心实现逻辑

  • 批量遍历目标目录下所有后缀为.txt的语料文件,无需逐个手动读取
  • 逐行解析单份文件内容,匹配原文件字段与目标DataFrame列名的对应关系
  • 将每份文件解析得到的键值对汇总为统一的字典列表,直接转换为Pandas DataFrame

解析时需要注意:分隔字段的冒号只切分第一处,避免字段值内部本身带的冒号(比如URL中的协议分隔符、正文内容中的冒号)被误切割

可直接复用的核心代码

import os
import pandas as pd

# 建立原文件字段名到目标列名的映射
field_map = {
    "TITLE": "title",
    "URL": "url",
    "META": "meta",
    "DATE": "date",
    "AUTHOR(S)": "author",
    "TEXT": "text"
}
# 替换为你实际存放语料TXT的文件夹路径
corpus_folder = "./your_corpus_path"
# 存储所有文件解析结果的列表
parsed_records = []

# 遍历目录下所有TXT文件
for _, _, file_list in os.walk(corpus_folder):
    for file_name in file_list:
        if file_name.endswith(".txt"):
            current_file_path = os.path.join(corpus_folder, file_name)
            current_record = {}
            # 逐行打开解析文件
            with open(current_file_path, "r", encoding="utf-8") as f:
                for line in f:
                    clean_line = line.strip()
                    # 跳过空行
                    if not clean_line:
                        continue
                    # 仅按第一处冒号切分字段和值
                    if ":" in clean_line:
                        field_name, field_value = clean_line.split(":", maxsplit=1)
                        field_name = field_name.strip()
                        field_value = field_value.strip()
                        # 匹配映射关系,存入对应字段值
                        if field_name in field_map:
                            current_record[field_map[field_name]] = field_value
            parsed_records.append(current_record)

# 生成结构化DataFrame
corpus_df = pd.DataFrame(parsed_records)

常见适配调整

  • 编码适配:如果读取文件出现乱码,根据你的TXT实际编码修改open函数的encoding参数,比如将utf-8改为gbk
  • 多行TEXT字段适配:如果语料中的TEXT正文是跨多行书写的,只需在解析时判断当前行属于TEXT字段内容,逐行拼接到对应值中即可,无需重复修改整体逻辑
  • 缺失字段适配:如果个别语料文件缺失某类字段,Pandas会自动将对应DataFrame位置填充为NaN,无需额外做兼容判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 07:36:04