Python を使用して文字列から英数字以外の文字をすべて削除する最適な方法は何ですか?
提示された解決策はこの質問のPHPバージョンおそらく若干の調整を行えば動作するでしょうが、私にとってはあまり「Python 的」ではないようです。
ちなみに、削除したいのはピリオドやカンマ(およびその他の句読点)だけではなく、引用符や括弧なども削除したいのです。
ベストアンサー1
string.printable
好奇心からいくつかの関数の時間を計ってみました。これらのテストでは、文字列(組み込みモジュールの一部)から英数字以外の文字を削除していますstring
。コンパイル済みの使用が'[\W_]+'
最もpattern.sub('', str)
高速であることがわかりました。
$ python -m timeit -s \
"import string" \
"''.join(ch for ch in string.printable if ch.isalnum())"
10000 loops, best of 3: 57.6 usec per loop
$ python -m timeit -s \
"import string" \
"filter(str.isalnum, string.printable)"
10000 loops, best of 3: 37.9 usec per loop
$ python -m timeit -s \
"import re, string" \
"re.sub('[\W_]', '', string.printable)"
10000 loops, best of 3: 27.5 usec per loop
$ python -m timeit -s \
"import re, string" \
"re.sub('[\W_]+', '', string.printable)"
100000 loops, best of 3: 15 usec per loop
$ python -m timeit -s \
"import re, string; pattern = re.compile('[\W_]+')" \
"pattern.sub('', string.printable)"
100000 loops, best of 3: 11.2 usec per loop