How do I strip all the spaces in a python string? For example, I want a string like strip my spaces
to be turned into stripmyspaces
, but I cannot seem to accomplish that with strip()
:
JavaScript
x
3
1
>>> 'strip my spaces'.strip()
2
'strip my spaces'
3
Advertisement
Answer
Taking advantage of str.split’s behavior with no sep parameter:
JavaScript
1
4
1
>>> s = " t foo n bar "
2
>>> "".join(s.split())
3
'foobar'
4
If you just want to remove spaces instead of all whitespace:
JavaScript
1
3
1
>>> s.replace(" ", "")
2
'tfoonbar'
3
Premature optimization
Even though efficiency isn’t the primary goal—writing clear code is—here are some initial timings:
JavaScript
1
5
1
$ python -m timeit '"".join(" t foo n bar ".split())'
2
1000000 loops, best of 3: 1.38 usec per loop
3
$ python -m timeit -s 'import re' 're.sub(r"s+", "", " t foo n bar ")'
4
100000 loops, best of 3: 15.6 usec per loop
5
Note the regex is cached, so it’s not as slow as you’d imagine. Compiling it beforehand helps some, but would only matter in practice if you call this many times:
JavaScript
1
3
1
$ python -m timeit -s 'import re; e = re.compile(r"s+")' 'e.sub("", " t foo n bar ")'
2
100000 loops, best of 3: 7.76 usec per loop
3
Even though re.sub is 11.3x slower, remember your bottlenecks are assuredly elsewhere. Most programs would not notice the difference between any of these 3 choices.