一尘不染

如何从字符串中删除所有空格

python

如何删除python字符串中的所有空格?例如,我希望将一个字符串strip my spaces转换为stripmyspaces,但是我似乎无法通过以下方式完成此操作strip()

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

阅读 132

收藏
2020-12-20

共1个答案

一尘不染

利用没有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倍,但请记住,瓶颈肯定在其他地方。大多数程序不会注意到这三个选择之间的区别。

2020-12-20