python - 使用 REGEX 读取财务报表

标签 python regex python-3.x

我正在开展一个项目,我必须阅读财务报表的扫描图像。我使用 tesseract 4 将图像转换为文本输出,如下所示(这是一个片段):

收入 9,000,000 900,000

销售成本 900,000 900,000

毛利润(90%;2016 年 - 90%) 900,000 900,000

我想将上面的内容分成三个条目的列表,其中第一个条目是文本,然后第二个和第三个条目是数字。例如,第一行看起来像这样:

[[REVENUE], [9,000,000], [9,000,000]]

我遇到了这个堆栈溢出帖子,其中有人尝试使用 re.match().groups() 方法来查找模式:How to split strings into text and number?

我刚刚接触正则表达式,并且正在努力正确理解语法和文档。我现在正在尝试使用备忘单,但我很难弄清楚如何解决这个问题,请帮忙。

最佳答案

我通过观察你的第一个预期输出编写了这个正则表达式。但我不确定你的第三句话想要的输出是什么。

  1. ([A-Za-z ]+)(?=\d|\S) 匹配名称,直到找到数字或符号。
  2. .*? 表示我们不关心的字符串
  3. ([\d,]+)\s([\d,]+|(?=-\n|-$)) 匹配一组或两组数字,如果有只有一组数字,该组应该以换行符或文本结尾结尾。

测试代码(已编辑):

import re

regex = r"([A-Za-z ]+)(?=\d|\S).*?([\d,]+)\s([\d,]+|(?=-\n|-$))"

text = """
REVENUE 9,000,000 900,000

COST OF SALES 900,000 900,000

GROSS PROFIT (90%; 2016 - 90%) 900,000 900,000

Business taxes 999 -
"""

print(re.findall(regex,text))
# [('REVENUE ', '9,000,000', '900,000'), ('COST OF SALES ', '900,000', '900,000'), ('GROSS PROFIT ', '900,000', '900,000'), ('Business taxes ', '999', '')]

关于python - 使用 REGEX 读取财务报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53663439/

相关文章:

PHP:通过插入逗号来格式化数字字符串

python - 使用 'raise from' 语法时链式异常的完整回溯

python - 最有效的字符串相似度度量函数

python - 合并两个 DataFrame 的函数

python - 多处理的并行处理比顺序处理慢

python - 找不到 swig 命令 - 在本地安装 swig 时

java - 有效的正则表达式?

java - 需要 java 正则表达式来获得特定的输出

python - 将 Binary 对象数组转换为 Python 3 中的字符串

python - 将一个 NumPy 数组除以另一个 NumPy 数组