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

Python如何拆分收据文本行并写入CSV对应单元格?

收据文本行拆分逻辑实现

你可以通过正则表达式匹配金额特征完成拆分,兼容OCR识别常见的标点误差、空格冗余场景,实现代码如下:

核心拆分函数实现

import re

def splitThisIntoCells(line: str):
    # 正则规则:兼容中英文冒号分隔、带/不带$符号、整数/小数金额
    pattern = r'^(.*?)\s*[::]\s*(\$?\d+(?:\.\d+)?)\s*$'
    match_res = re.match(pattern, line)
    if match_res:
        cell_name = match_res.group(1).strip()
        money = match_res.group(2).strip()
        # 如果你只要纯数字不要$,可以加一行money = money.lstrip('$')
        return cell_name, money
    # 兜底逻辑:匹配失败时返回原行和空值,你也可以根据需求改为跳过该行
    return line.strip(), ''

优化写入CSV的方式

不建议直接拼接字符串写入文件,避免内容本身包含逗号时打乱CSV格式,推荐用Python内置的csv模块处理:

import csv

# 示例文本
text = [
    "Trip fare: $2",
    "Meal:$15.99",
    "Parking fee: 8",
    "Hotel: 129.5"
]

with open('receipt.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    # 可选写入表头
    writer.writerow(['消费项目', '金额'])
    for line in text:
        cell_name, money = splitThisIntoCells(line)
        # 只写入金额非空的行
        if money:
            writer.writerow([cell_name, money])

如果你的收据格式没有冒号分隔,是靠空格区分消费项目和金额(比如Coffee $4.5),只需要把正则规则替换为:

pattern = r'^(.*?)\s+(\$?\d+(?:\.\d+)?)\s*$'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 19:06:03