0

複数の正規表現ステートメントを1つに組み合わせて、1回のパスで異なるサブを実行できるようにする方法はありますか?

no_Punct = re.sub('(\w)([?:!.,;-]+)(\s)',r'\1 ',raw)
no_Punct = re.sub('(\s)([-]+)(\s)',r'\1',no_Punct)

入力文字列は「raw」です。単語の末尾の特定の句読点を削除し、両側のスペースで囲まれているハイフンを削除しようとしています。これらの両方を1つのステートメントにまとめることはできますか?

与えられた入力:これは文です!4分の1は0.25に相当します。

出力は次のとおりです。これは、4分の1が0.25に等しい文です。

4

1 に答える 1

5

自明なことに、一方を他方に置き換えるだけで:

no_Punct = re.sub('(\s)([-]+)(\s)', r'\1', re.sub('(\w)([?:!.,;-]+)(\s)', r'\1 ', raw))

これも機能する可能性がありますが:

no_Punct = re.sub('(?<=\w)[?:!.,;-]+(?=\s)|(?<=\s)-+\s', '', raw)
于 2012-10-31T23:13:51.120 に答える