繁体   English   中英

使用 Python 使用正则表达式仅从字符串中提取特定值

[英]Extract only the specific value from string with Regex Using Python

我正在尝试使用正则表达式从字符串中提取特定文本值,但由于关键字的开头之间没有空格,需要从中提取值的关键字出现错误。 寻找提取关键字的值开始。

尝试使用 PyPDF2 和 pdfminer 但得到错误。

fr = PyPDF2.PdfFileReader(file)
data = fr.getPage(0).extractText()

OutPut : ['Date : 2020-09-06 20:43:00 Ack No : 3320000266 Original for RecipientInvoice No.: IN05200125634发行日期: 06.09.2015TAX INVOICE(Issued 31() u/1s of G2015) POLO INDUSTRIES LIMITED CIN: K253648B85PLC015063 GSTIN: 3451256132uuy668803E1Z9PAN: BBB7653279K ....']

我正在寻找从上述输出中获取确认号、发布日期、CIN

使用脚本:

    regex_ack_no = re.compile(r"Ack No(\d+)")
    regex_due_date = re.compile(r"Date of Issue(\S+ \d{1,2}, \d{4})")
    regex_CIN = re.compile(r"CIN(\$\d+\.\d{1,2})")

ack_no = re.search(regex_ack_no, data).group(1)
due_date = re.search(regex_due_date, data).group(1)
cin = re.search(regex_CIN, data).group(1)

return[ack_no, due_date, cin]

错误:

AttributeError: 'NoneType' object has no attribute 'group'

当将相同的脚本与另一个具有表格格式数据的 PDF 文件一起使用时。

您需要更改正则表达式模式以匹配数据格式。 关键字后跟空格和: ,您必须匹配它们。 日期的格式不是您的模式中的格式,也不是CIN的格式。

在调用.group(1)之前,检查匹配是否成功。 在我下面的代码中,当没有匹配项时,我返回默认值。

import re

data = 'Date : 2020-09-06 20:43:00Ack No : 3320000266Original for RecipientInvoice No.: IN05200125634Date of Issue: 06.09.2015TAX INVOICE(Issued u/s 31(1) of GST Act, 2017)POLO INDUSTRIES LIMITEDCIN: K253648B85PLC015063GSTIN: 3451256132uuy668803E1Z9PAN: BBB7653279K .....'

regex_ack_no = re.compile(r"Ack No\s*:\s*(\d+)")
regex_due_date = re.compile(r"Date of Issue\s*:\s*(\d\d\.\d\d\.\d{4})")
regex_CIN = re.compile(r"CIN:\s*(\w+?)GSTIN:")

ack_no = re.search(regex_ack_no, data)
if ack_no:
    ack_no = ack_no.group(1)
else:
    ack_no = 'Ack No not found'
due_date = re.search(regex_due_date, data)
if due_date:
    due_date = due_date.group(1)
else:
    due_date = 'Due date not found'
cin = re.search(regex_CIN, data)
if cin:
    cin = cin.group(1)
else:
    cin = 'CIN not found'

print([ack_no, due_date, cin])

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM