Authorize.net(或银行)不会验证地址,除非是邮政信箱地址,除非它是123 P.O.框。大多数人使用P.O Box 123.有很多不同的PO Box格式,我需要一个算法,将数字放在邮政信箱的前面 任何建议都会有所帮助。
答案 0 :(得分:0)
正则表达式'(P[\.\s]*O[\.\s]*Box)?\s*(\d+)\s*(P[\.\s]*O[\.\s]*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)