私はPythonで任意の電話番号を含む文字列のリストを持っています。 拡張子はオプションです。regex pythonをグループ化するベストプラクティス
st = ['(800) 555-1212',
'1-800-555-1212',
'800-555-1212x1234',
'800-555-1212 ext. 1234',
'work 1-(800) 555.1212 #1234']
私の目的は、個々のグループを分離できるように電話番号を分離することです。 '800'、 '555'、 '1212'、およびオプションの '1234'。
次のコードを試しました。
p1 = re.compile(r'(\d{3}).*(\d{3}).*(\d{4}).*(\d{4})?')
step1 = [re.sub(r'\D','',p1.search(t).group()) for t in st]
p2 = re.compile(r'(\d{3})(\d{3})(\d{4})(\d{4})?')
step2 = [p2.search(t).groups() for t in step1]
p1とp2は、目的の出力をフェッチする2つのパターンです。
for i in range(len(step2)):
print step2[i]
出力された:
('800', '555', '1212', None)
('800', '555', '1212', None)
('800', '555', '1212', '1234')
('800', '555', '1212', '1234')
('800', '555', '1212', '1234')
私は初心者ですので、私はこのような問題やPythonコミュニティに続くいくつかのベストプラクティスをtacleするためのより良い方法があるかどうかの提案を取得したいです。前もって感謝します。
私はre.findall
とグループの類似性はあなたに簡単な方法が可能だと思う