【问题标题】:extracting number with decimal points from text extracted from pdf files从pdf文件中提取的文本中提取带小数点的数字
【发布时间】:2022-06-11 02:29:50
【问题描述】:

我只需要从以下字符串中提取带小数点的数字。我使用了 re 模块,但遇到了多个逗号的问题(不能有逗号或超过 1 个)。另一个问题是十进制数字后跟单词(即 1,513,971.63Savings )。当我从 PDF 文件中提取字符串时,我无法更改格式。

示例字符串:

Date: 01-Mar-2022BETKA Br (0225)LIABILITIESCUSTOMER DEPOSITS 19,858,700.86Current Deposit12102010010165 350,745,799.38Saving Deposits12102010050170 174,381.98SB Bidhaba Bhata12102010060171 1,125,990.66SB Bayaska Bhata12102010070172 131,647.15SB Pratibandhy

输出:

19,858,700.86
350,745,799.38
174,381.98
1,125,990.66
131,647.15

有人帮忙吗?

【问题讨论】:

  • 请使用{} 按钮来保留代码或平面文件和空格。文件中的星号是文字还是仅用于突出显示您的数据点?
  • 如果数字字符串可以包含逗号或不包含逗号,那么作为人类,你怎么知道你不想要12102010010165,但你想要350,745,799.38?他们总是有小数吗?如果没有,作为人类,您是否有任何其他方法能够确定哪个是好数字,哪个是坏数字?也许模式总是 ?
  • 是的,它们总是有小数点。它实际上意味着货币,我需要使用它。我不需要其他数字。

标签: python regex python-re


【解决方案1】:

我猜你错过了 174,381.98。如果是这样,请使用(\d+(?:[,.]\d+)+) 模式来获得预期的结果。

import re

string = """Date: 01-Mar-2022BETKA Br (0225)LIABILITIESCUSTOMER DEPOSITS 19,858,700.86Current Deposit12102010010165 350,745,799.38Saving Deposits12102010050170 174,381.98SB Bidhaba Bhata12102010060171 1,125,990.66SB Bayaska Bhata12102010070172 131,647.15SB Pratibandhy"""

print(*re.findall(r"(\d+(?:[,.]\d+)+)", string), sep="\n")

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多