1. ホーム
  2. パイソン

[解決済み】文字列からすべての空白を取り除く方法

2022-04-07 05:59:27

質問

Python の文字列からすべてのスペースを取り除くにはどうすればよいですか?例えば、私は以下のような文字列が欲しいです。 strip my spacesstripmyspaces でそれを実現することはできないようです。 strip() :

>>> 'strip my spaces'.strip()
'strip my spaces'

解決方法は?

sepパラメータがない場合のstr.splitの挙動を利用する。

>>> s = " \t foo \n bar "
>>> "".join(s.split())
'foobar'

すべての空白文字を削除するのではなく、空白文字だけを削除したい場合。

>>> s.replace(" ", "")
'\tfoo\nbar'

早すぎる最適化

効率は第一の目標ではなく、明確なコードを書くことですが、ここでは初期のタイミングを紹介します。

$ python -m timeit '"".join(" \t foo \n bar ".split())'
1000000 loops, best of 3: 1.38 usec per loop
$ python -m timeit -s 'import re' 're.sub(r"\s+", "", " \t foo \n bar ")'
100000 loops, best of 3: 15.6 usec per loop

正規表現はキャッシュされているので、想像しているほど遅くはない。 事前にコンパイルしておくと便利ですが、実際に問題になるのはこの たくさん を何度も使用します。

$ python -m timeit -s 'import re; e = re.compile(r"\s+")' 'e.sub("", " \t foo \n bar ")'
100000 loops, best of 3: 7.76 usec per loop

re.subは11.3倍遅いですが、ボトルネックは他の場所にあることを忘れないでください。 ほとんどのプログラムは、これら3つの選択肢の違いに気づかないでしょう。