簡體   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