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