2011-12-03 25 views
1

Authorize.net(或銀行)不會驗證地址,除非是郵政信箱地址,除非它的格式爲123 P.O.框。大多數人使用P.O Box 123.有許多變體PO Box格式,我需要一個算法將數字放在郵政信箱前 任何建議都會有所幫助。python po box split for auth.net

+0

添加一些測試數據。我要做的第一件事就是查找數字並將其放在字符串的末尾。 –

回答

0

正則表達式'(P[\.\s]*O[\.\s]*Box)?\s*(\d+)\s*(P[\.\s]*O[\.\s]*Box)?'幾乎可以匹配任何看起來像PO Box的東西(但也只會匹配數字地址)。替換'\2 PO Box'將使數據標準化。

因此,代碼會是這樣的

 
import re

rgx = re.compile(r'(P[\.\s]*O[\.\s]*Box)?\s*(\d+)\s*(P[\.\s]*O[\.\s]*Box)?')

addrs = ('PO Box 001', 'P.O. Box 002', 'P.O.Box 003', '004 P.O. Box', '005 PO Box', '006') for addr in addrs: print rgx.sub(r'\2 PO Box', addr)