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

如何从包含多笔交易数据的文本文件中提取交易明细

交易明细提取实现方案

1. 先明确统一提取字段

提前定义所有交易通用的结构化字段,确保不同类型交易提取的内容格式一致:

  • 交易时间
  • 交易类型(消费/取现/转账等)
  • 支付渠道(借记卡/UPI/Simpl/OlaMoney等)
  • 交易对手/消费场景
  • 交易金额(单位:Rs)
  • 关联凭证(卡号后四位/UPI流水号/交易编号等)
  • 账户余额(可选,仅部分交易有该字段)
  • 交易分类(对应原文本中Aggregate under XXX的标记内容)

2. 文本预处理

首先清洗原始文本中的HTML标签(<p>/<code>/<a>等),仅保留纯文本内容;同时将Aggregate under XXX的分类标记单独提取,和该标记之后、下一个分类标记之前的所有交易绑定,作为该批交易的分类标签。

3. 按交易模板编写正则匹配规则

你提供的样例交易都是固定模板的半结构化文本,用正则表达式即可完成精准提取,核心匹配规则如下:

借记卡交易模板

匹配规则:您于(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})通过Debit Card (xx\d{4})在(.*?)(消费|取现)Rs\.?([0-9\.]+),可用余额Avl Bal Rs\.?([0-9\.]+)
对应提取字段:交易时间、卡号后四位、交易对手、交易类型、交易金额、账户余额

HDFC银行UPI转账模板

匹配规则:尾号\*\*(\d{4})账户于(\d{2}-\d{2}-\d{2})向VPA (.*?)支出Rs ?([0-9\.]+)(UPI Ref No (\d+))
对应提取字段:卡号后四位、交易时间、收款账户、交易金额、UPI流水号

先买后付消费模板

  • Simpl支付匹配规则:(.*?)平台消费Rs\.?([0-9\.]+),通过(Simpl)扣款
  • OlaMoney支付匹配规则:您使用(OlaMoney Postpaid)支付(.*?)平台交易.*?的Rs\.? ?([0-9\.]+)款项成功
    对应提取字段:支付渠道、消费场景、交易金额

4. 结构化输出

把所有提取到的字段整理成CSV、JSON或者表格形式即可,样例输出如下:

交易时间交易类型支付渠道交易对手/场景金额(Rs)关联凭证余额(Rs)分类标签
2021-03-25 02:10:37消费借记卡AMAZON PAY INDIA PRIVA2.00xx22171091.07bank withdrawal
2021-06-06 20:27:20取现借记卡+UBI NOIDA MAIN500.00xx1135854.14bank withdrawal
06-08-21转账UPIkshreyansnahar@okhdfcbank1.00121554846690-UPI

Python实现参考代码

如果需要批量处理,可以用以下代码快速实现:
首先安装依赖:
pip install beautifulsoup4 lxml
核心代码:

from bs4 import BeautifulSoup
import re
import csv

# 读取原始交易文本
with open("交易原始文件.txt", "r", encoding="utf-8") as f:
    raw_content = f.read()

soup = BeautifulSoup(raw_content, "lxml")
current_category = ""
result = []

for tag in soup.find_all(["p", "code"]):
    text = tag.get_text(strip=True)
    # 提取分类标签
    if text.startswith("Aggregate under"):
        current_category = text.replace("Aggregate under", "").strip()
        continue
    # 匹配借记卡交易
    debit_res = re.search(r"您于(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})通过Debit Card (xx\d{4})在(.*?)(消费|取现)Rs\.?([0-9\.]+),可用余额Avl Bal Rs\.?([0-9\.]+)", text)
    if debit_res:
        result.append({
            "交易时间": debit_res.group(1),
            "交易类型": debit_res.group(4),
            "支付渠道": "借记卡",
            "交易对手": debit_res.group(3),
            "金额": debit_res.group(5),
            "关联凭证": debit_res.group(2),
            "余额": debit_res.group(6),
            "分类": current_category
        })
        continue
    # 其余UPI、先买后付交易匹配逻辑按上面的正则规则补充即可

# 输出为CSV文件
with open("交易明细提取结果.csv", "w", encoding="utf-8-sig", newline="") as f:
    writer = csv.DictWriter(f, fieldnames=result[0].keys())
    writer.writeheader()
    writer.writerows(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 09:06:01