用于auth.net的python po box split

时间:2011-12-03 19:00:23

标签: python regex

Authorize.net(或银行)不会验证地址,除非是邮政信箱地址,除非它是123 P.O.框。大多数人使用P.O Box 123.有很多不同的PO Box格式,我需要一个算法,将数字放在邮政信箱的前面 任何建议都会有所帮助。

1 个答案:

答案 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)