我試圖從這樣的字串中提取唯一的發票ID:
我試圖從這樣的字串中提取唯一的發票ID。
1) 支付發票編號.2021-3-5450。
2) 發票2021 3 27已經支付。
文字可以改變,但發票的id格式始終是:
- YEAR-Month-CUSTOMER_ID, or
- 年-月-客戶ID
Customer_ID可以從1到9999.
。我試著這樣做:
m = re.search(r "d "/span>, s)
但它只回傳2021年。有什么方法可以讓我捕捉到上述格式的所有數字嗎?
uj5u.com熱心網友回復:
在Regex操場上試試這個。鏈接
Regex。([d]{4})[-](0?[1-9]|1[0-2])[-](d{1,4})/code>
解釋。匹配年份為4位數,月份為1-12的整數(包括前導零),客戶ID為0-9999的整數;這些值可以用破折號或空格分隔。這些組將被捕獲為(year, month, customer_id),按這個順序。
Python演示:
import re
from typing import Optional, NamedTuple
invoice_re = re.compile(r'([d]{4})[- ](0?[1-9]|1[0-2])[- ](d{1,4}) ')
# NamedTuple,包含發票資料。
Invoice = NamedTuple('Invoice', year=int, month=int, customer_id=int)
def parse_invoice(invoice: str) -> Optional【發票】。
""決議一張發票,并回傳一個(年、月、客戶_ID)的元組""。
result = invoice_re.search(invoice)
return Invoice(*map(int, result.group()) if result else None
s1 = 'Payment of invoice nr.2021-3-5450'/span>
s2 = '2021年3月27日的發票已被支付'。
print(parse_invoice(s1))
print(parse_invoice(s2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/323612.html
標籤:
