如何从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')