我正在用Python做一个信息检索任务,我试图从PDF文件中提取发票号,为此我将它们转换成字符串(保持原始格式),一些PDF文件有多个表格式的发票号。以下是一张PDF发票的示例:
Invoice Number Date Ac.No. Type Amount
1654339087 28.01.2019 1508765556 Invoice 1,268.40
1655214567 18.12.2018 3508753550 Invoice 3,134.20
1609833445 12.02.2019 2500444556 Invoice 2,735.84
为了从这些表中提取发票号,我创建了一个Regex,它帮助我从这些表中提取发票号,为了从多行中捕获发票号,我重复了Regex的最后一部分,例如在上面的场景中,我将重复Regex的最后一部分(.+\n(\d{5,})
)3次,这工作正常,但问题是,我不知道有多少这样的行可以在PDF文件例如10,20。在这种情况下,我需要重复regex的这一部分,等于行数,我正在寻找一个有效的解决方案,在regex中我可以提到一个数字(等于行总数),或者将regex与一些要重复的数字相乘。你知道吗
例如:(.+\n(\d{5,})*10
)或(.+\n(\d{5,}){10}
)。我发现很少有类似的答案(不完全相同)提到使用{}
传递数字,但这在我的案例中不起作用。下面是我创建的正则表达式:
pattern = re.compile(r'Invoice Number\s*[A-Za-z0-9-._:\s]+\n(\d{5,}).+\n(\d{5,}).+\n(\d{5,})',re.IGNORECASE | re.MULTILINE)
预期的输出是(我现在通过重复regex的一部分3次得到):
1654339087
1655214567
1609833445
感谢您的帮助!!你知道吗
您可以尝试从第二行开始逐行读取文件:
正如@Wiktor Stribiżew在另一个SO postCapture repeated groups in python regex上所建议的那样 下面的解决方案对我使用regexhttps://pypi.org/project/regex/有效:
相关问题 更多 >
编程相关推荐