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

如何从每日文本文件按固定模式提取标签值并生成DataFrame?

需求:从固定格式文本文件提取指定标签值并转为DataFrame

我每天会收到若干格式固定的文本文件,文件内容采用「标签+值」的模式,值以引号结尾且每日不同。需要从中提取EQD+CN和RFF+BM标签对应的数值,转换为如下格式的DataFrame:

EQD_CN    RFF_BM
0   3+5     MEDUD6352618   
1   3+5     MEDUAE709954
2   ++4     null

注:部分文件可能缺失RFF+BM标签(标识ID),此时对应位置需填充null。我刚接触Python数据提取任务,求帮忙。


解决方案

步骤1:遍历并读取文件

指定存放文本文件的文件夹路径,遍历其中的目标文件(比如.txt格式),逐行读取每个文件的内容。

步骤2:匹配提取目标标签

用正则表达式匹配EQD+CN和RFF+BM对应的行,提取引号内的数值;如果某个文件找不到RFF+BM,就用None暂存(后续转为null)。

步骤3:生成DataFrame

把所有文件提取到的数据汇总成列表,再用pandas转换成指定格式的DataFrame,缺失值替换为null。


完整代码示例

import os
import re
import pandas as pd

# 替换成你的文本文件所在文件夹路径
folder_path = "./daily_text_files"

# 用来存储所有提取结果的列表
extracted_data = []

# 遍历文件夹里的所有文件
for file_name in os.listdir(folder_path):
    # 只处理txt文件,根据你的实际文件格式调整后缀
    if file_name.endswith(".txt"):
        file_full_path = os.path.join(folder_path, file_name)
        eqd_value = None
        rff_value = None
        
        # 打开并读取文件内容
        with open(file_full_path, 'r', encoding='utf-8') as f:
            for line in f:
                # 匹配EQD+CN的行,提取引号内的内容
                eqd_match = re.search(r'EQD\+CN\s*=\s*"([^"]+)"', line.strip())
                if eqd_match:
                    eqd_value = eqd_match.group(1)
                # 匹配RFF+BM的行,提取引号内的内容
                rff_match = re.search(r'RFF\+BM\s*=\s*"([^"]+)"', line.strip())
                if rff_match:
                    rff_value = rff_match.group(1)
        
        # 将当前文件的结果加入列表,缺失RFF+BM则留空(后续转null)
        extracted_data.append({
            "EQD_CN": eqd_value,
            "RFF_BM": rff_value
        })

# 转换为DataFrame
result_df = pd.DataFrame(extracted_data)
# 将缺失值替换为显示的"null"
result_df = result_df.fillna("null")

# 打印结果或保存到文件
print(result_df)
# 可选:保存为csv文件
# result_df.to_csv("extracted_result.csv", index=False)

代码说明

  • 正则表达式r'EQD\+CN\s*=\s*"([^"]+)"':匹配EQD+CN = "xxx"这类格式的行,\s*用来忽略标签和等号之间的空格,([^"]+)提取引号内的所有内容(直到下一个引号)
  • 每个文件单独处理,确保EQD_CN和RFF_BM的对应关系正确
  • fillna("null")把pandas默认的NaN替换成你需要显示的null,如果不需要可以去掉这行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:25:07