Nutzen Sie das Verhalten von str.split ohne sep-Parameter:
>>> s = " \t foo \n bar "
>>> "".join(s.split())
'foobar'
Wenn Sie nur Leerzeichen anstelle aller Leerzeichen entfernen möchten:
>>> s.replace(" ", "")
'\tfoo\nbar'
Vorzeitige Optimierung
Auch wenn Effizienz nicht das Hauptziel ist - das Schreiben von klarem Code ist dies -, sind hier einige erste Zeitpunkte:
$ 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
Beachten Sie, dass der reguläre Ausdruck zwischengespeichert ist, sodass er nicht so langsam ist, wie Sie es sich vorstellen können. Kompilieren es einige vorher hilft, würde aber in der Praxis nur aus , wenn Sie diese nennen viele Male:
$ 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
Auch wenn re.sub 11,3x langsamer ist, denken Sie daran, dass Ihre Engpässe sicherlich anderswo liegen. Die meisten Programme würden den Unterschied zwischen diesen drei Optionen nicht bemerken.