2011-12-03 3 views
1

のためのpythonのポストボックス分割123.P.O.の形式でない限り、PO Boxアドレスの場合を除いて、Authorize.net(または銀行)はアドレスを検証しません。ボックス。ほとんどの人はP.O Box 123を使用しています。PO Box形式のバリエーションがあり、POの前に数字を入れるアルゴリズムが必要です 何か助けになると助かります。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)