用Python中的单个空白replace多个空格
我有这个string:
mystring = 'Here is some text I wrote '
我怎样才能将双重,三重(…)空格replace为一个空格,以便我得到:
mystring = 'Here is some text I wrote'
一个简单的可能性(如果你宁愿避免RE)是
' '.join(mystring.split())
拆分和连接执行你明确要求的任务 – 另外,他们也做了额外的一个,你不谈,但在你的例子中看到,删除尾随空格;-)。
import re re.sub( '\s+', ' ', mystring ).strip()
这也将替代所有的标签,换行符和其他“类空白”字符。
strip()最后会根据你的要求切断任何尾随的空白。
为了完整性,您还可以使用:
mystring = mystring.strip() # the while loop will leave a trailing space, # so the trailing whitespace must be dealt with # before or after the while loop while ' ' in mystring: mystring = mystring.replace(' ', ' ')
这将在空间相对较less的string上快速工作(在这种情况下比在这种情况下更快)。
在任何情况下, Alex Martelli的拆分/join解决scheme的执行速度至less一样快(通常显着更多)。
在你的例子中,使用timeit.Timer.repeat()的默认值,我得到以下时间:
str.replace: [1.4317800167340238, 1.4174888149192384, 1.4163512401715934] re.sub: [3.741931446594549, 3.8389395858970374, 3.973777672860706] split/join: [0.6530919432498195, 0.6252146571700905, 0.6346594329726258]
编辑:
刚刚遇到这个post ,提供了这些方法的速度相当长的比较。
string.replace(" ","")
所有偶数的空间都被消除了