私は、携帯電話からSMSを読み込み、いくつかの正規表現のパターンに基づいて情報を抽出するPythonを使用して、簡単なアカウントマネージャのアプリケーションを自分で作成しようとしています。Pythonでregexから1つの文字列を抽出するには?
私は複雑な正規表現パターンを書いてhttps://pythex.org/でテストしました。 例:私はstr.extract()メソッドではなく、単一の結果を取得を使用してPythonで同じことをしようとすると、
Text: 1.00 is debited from ******1234 for food
Pattern: (account|a\/c|ac|from|acct|savings|credit in|ac\/|sb\-|acc|a\/c)(\s|\.|\-)*(no|number)*(\.|\s|:)*\s*(ending)*\s*(((n{1,}|x{1,}|[0-9]+|\*{1,}))+)\-*((n{1,}|x{1,}|[0-9]+|\*{1,}|\s))*\-*([0-9]*)
Result: from ******1234
しかし、私は、各グループの列を持つデータフレームを取得しています。上記のメッセージのためのPythonコードの
all_sms=pd.read_csv("all_sms.csv")
pattern = '(account|a\/c|ac|from|acct|savings|credit in|ac\/|sb\-|acc|a\/c)(\s|\.|\-)*(no|number)*(\.|\s|:)*\s*(ending)*\s*(((n{1,}|x{1,}|[0-9]+|\*{1,}))+)\-*((n{1,}|x{1,}|[0-9]+|\*{1,}|\s))*\-*([0-9]*)'
test = all_sms.extract(pattern, expand = False)
出力:
Pythonのコードは次のようになります
0 from
1
2 NaN
3 NaN
4 NaN
5 ******1234
6 1234
7 1234
8
9
10
私は、Pythonに非常に新しいですし、実地体験で学ぼうと、誰かが私がどこでこれに間違っているのかを指摘できれば本当に役に立ちますか?
各アンエスケープされた '(' .')の後ろに冗長なキャプチャグループを削除 –
これは特定の言語についての言語タグの使用を検討します – doctorlove