Substitute multiple whitespace with single whitespace in Python
本问题已经有最佳答案,请猛点这里访问。
我有这根绳子:
1 | mystring = 'Here is some text I wrote ' |
如何将双空格、三空格(…)替换为一个空格,以便:
1 | mystring = 'Here is some text I wrote' |
一个简单的可能性是
1 | ' '.join(mystring.split()) |
split和join执行您明确要求的任务——另外,它们还执行您不谈论但在示例中看到的额外任务,删除尾随空格;-)。
1 2 3 | import re re.sub('\s+', ' ', mystring).strip() |
这也将替换所有制表符、换行符和其他类似于空格的字符。
为了完整性,您还可以使用:
1 2 3 4 5 | 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(' ', ' ') |
它可以在空间相对较少的字符串上快速工作(在这种情况下比
在任何情况下,Alex Martelli的分割/连接解决方案的执行速度都至少一样快(通常明显更快)。
在您的示例中,使用timeit.timer.repeat()的默认值,我得到以下时间:
1 2 3 | str.replace: [1.4317800167340238, 1.4174888149192384, 1.4163512401715934] re.sub: [3.741931446594549, 3.8389395858970374, 3.973777672860706] split/join: [0.6530919432498195, 0.6252146571700905, 0.6346594329726258] |
< BR>编辑:
刚刚看到这篇文章,它提供了这些方法的速度的相当长的比较。
1 | string.replace(" ","") |
所有偶数空格都被删除