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

如何将文本文件中的目标字符串转换为指定表头的DataFrame?

将账单字符串转换为指定结构的DataFrame

实现步骤与代码

直接通过字符串预处理、正则提取字段,再用pandas生成目标结构的DataFrame,具体代码如下:

import pandas as pd
import re

# 原始账单字符串
raw_str = "'Statement of Account,09 OCT AMAZON PRIME 38.87,09 OCT FP*FOOD CART 37.09,20 SEP MTHLY CASHBACK - VISA PAYW 5.96 CR'"

# 预处理:移除首尾引号,按逗号分割后跳过第一个标题项
transactions = raw_str.strip("'").split(',')[1:]

# 定义正则匹配规则,精准提取每笔交易的四个字段
pattern = re.compile(r'^(\d{2} [A-Z]{3}) (.*?) (\d+\.\d{2})(?: (CR))?$')

# 遍历提取每笔交易的字段信息
processed_data = []
for item in transactions:
    match_result = pattern.match(item.strip())
    if match_result:
        # 日期转成首字母大写格式(如OCT→Oct)
        date = match_result.group(1).title()
        # 交易描述
        desc = match_result.group(2)
        # 金额转数值类型
        amount = float(match_result.group(3))
        # 备注为空时填充空字符串
        remark = match_result.group(4) if match_result.group(4) else ""
        processed_data.append([date, desc, amount, remark])

# 生成指定表头的DataFrame
result_df = pd.DataFrame(processed_data, columns=['日期', '描述', '金额', '备注'])
print(result_df)

代码说明

  1. 字符串预处理:先去掉字符串首尾的单引号,用逗号分割后,第一个元素是账单标题,直接跳过,剩下的就是每笔交易的原始内容。
  2. 正则匹配逻辑:
    • (\d{2} [A-Z]{3}):提取两位日期+三位大写月份缩写(比如09 OCT)
    • (.*?):非贪婪匹配中间的交易描述,避免把金额部分误包含进来
    • (\d+\.\d{2}):提取带两位小数的金额数字
    • (?: (CR))?:可选匹配末尾的备注标识(如CR),没有则返回空值
  3. 字段整理:把日期格式统一为首字母大写,金额转为数值类型方便后续计算,最后将所有字段整理成二维列表。
  4. 生成DataFrame:用pandas将整理好的数据转换成DataFrame,指定对应的中文表头即可。

运行后得到的结果结构如下:

日期描述金额备注
09 OctAMAZON PRIME38.87
09 OctFP*FOOD CART37.09
20 SepMTHLY CASHBACK - VISA PAYW5.96CR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:23:29