利用没有sep参数的str.split的行为:
>>> s = " t foo n bar ">>> "".join(s.split())'foobar'
如果只想删除空格而不是所有空格:
>>> s.replace(" ", "")'tfoonbar'过早优化
尽管效率不是主要目标(编写清晰的代码是),但以下是一些初始时间:
$ 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倍,但请记住,瓶颈肯定在其他地方。大多数程序不会注意到这三个选择之间的区别。



