如何从string中去除所有的空格

如何去除pythonstring中的所有空格? 例如,我想像一个string像strip my spaces变成stripmyspaces ,但我似乎无法完成与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 

请注意,正则expression式被caching,所以它不像你想象的那么慢。 事先编译会有所帮助,但如果你多次调用它,实际上只会在实践中遇到问题:

 $ 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 

尽pipere.sub慢了11.3倍,记住你的瓶颈在其他地方是确定的。 大多数程序不会注意到这三种select之间的区别。

 >>> import re >>> re.sub(r'\s+', '', 'strip my spaces') 'stripmyspaces' 

还处理任何你没有想到的空白字符(相信我,有很多)。

或者,

 "strip my spaces".translate( None, string.whitespace ) 

这里是Python3版本:

 "strip my spaces".translate(str.maketrans('', '', string.whitespace)) 

最简单的是使用replace:

 "foo bar\t".replace(" ", "").replace("\t", "") 

或者,使用正则expression式:

 import re re.sub(r"\s", "", "foo bar\t") 

re.sub尝试一个正则expression式。 您可以search所有空白,并用空stringreplace。

在你的模式中将匹配空格字符 – 而不仅仅是一个空格(制表符,换行符等)。 您可以在手册中阅读更多关于它的信息 。

 import re re.sub(' ','','strip my spaces')