[英]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.