Pythonプログラミング:文字列から不要な物を取り除くre.sub

文字列から不要なものを取り除くならre.subを使うのがいいようだ。例えば、”【朗報!】名探偵コナンの映画『名探偵コナン ゼロの執行人』が予定通り4/13(金)に上映された。”という文章の場合、まず、【朗報!】が邪魔だと思ったら以下のように処理する。

1
2
3
import re
s = "【朗報!】名探偵コナンの映画『名探偵コナン ゼロの執行人』が予定通り4/13(金)に上映された。"
re.sub(r'[【][^】]*[】]', '', s)

もし、【】だけを除去したい場合は、単純に【】だけ残せばいい。

import re
s = "【朗報!】Detective Conanの映画『名探偵コナン ゼロの執行人』が予定通り4/13(金)に上映された。"
re.sub(r'[【】]', '', s)

映画の題名の『』が不要な場合も、r'[『』]'とすれば『』が取り除ける。【】も『』も取り除きたい時は、r'[【】『』]'とやればいい。カッコを取り除いた部分に、見栄え良くスペースを入れたい場合は、''の部分にスペースを入れてやればいい。カッコ内の文字を全て消したい時は以下のようにすればいい。

1
re.sub(r'[【『][^】]*[】』]', '', s)

アウトプットが、名探偵コナンの映画が予定通り4/13(金)に上映された。になる。4/13が邪魔な場合は、re.sub(r'\d+', '', s)とやると数字だけが除去されて、”/”だけが残る。

【朗報!】Detective Conanの映画『名探偵コナン ゼロの執行人』が予定通り/()に上映された。

4/13を丸ごと消去するには以下のようにすればいい。

1
re.sub(r'[/\d+]', '', s)

(金)も一緒に取り除いて、一昨日金曜日と入れ替えたい時は以下のようにする。

1
re.sub(r'[/\d+(][^】]*[)]', '一昨日金曜日', s)
【朗報!】Detective Conanの映画『名探偵コナン ゼロの執行人』が予定通り一昨日金曜日に上映された。

カッコとカッコ内の文字と数字を全て取り除きたい時は以下のようなコードになる。

1
2
3
import re
s = "【朗報!】Detective Conanの映画『名探偵コナン ゼロの執行人』が予定通り4/13(金)に上映された。"
re.sub('[/\d+【\(\『\[].+?[】\)\』\]]', '', s)

最終的なアウトプットは以下のようになった。

Detective Conanの映画が予定通りに上映された。
参考サイトhttps://stackoverflow.com/

スポンサーリンク