我有一個小函式可以在字串中找到完整的英國郵政編碼(例如 DE2 7TT)并相應地回傳它們。
但是,我想將其更改為 ALSO 回傳它得到的郵政編碼,其中有一個或兩個字母,然后是一個或兩個數字(例如 SE3、E2、SE45、E34)。
即它必須收集兩種形式的英國郵政編碼(不完整和完整)。
代碼是:
def pcsearch(postcode):
if bool(re.search('(?i)[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}', postcode)):
postcode = re.search('(?i)[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}', postcode)
postcode = postcode.group()
return postcode
else:
postcode = "na"
return postcode
需要進行哪些調整才能使其也適用于那些較短、不完整的郵政編碼?
uj5u.com熱心網友回復:
您可以使用交替和單詞邊界來撰寫模式。
(?i)\b(?:[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}|[A-Z]{1,2}\d{1,2})\b
正則運算式演示
通過檢查匹配,代碼可以只使用模式重構一次:
import re
def pcsearch(postcode):
pattern = r"(?i)\b(?:[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}|[A-Z]{1,2}\d{1,2})\b"
match = re.search(pattern, postcode)
if match:
return match.group()
else:
return "na"
strings = [
"SE3",
"E2",
"SE45",
"E34",
"DE2 7TT",
"E123",
"SE222"
]
for s in strings:
print(pcsearch(s))
輸出
SE3
E2
SE45
E34
DE2 7TT
na
na
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/498071.html
標籤:Python 正则表达式 python-2.7 邮政编码
