Skip to main content
 首页 » 编程设计

python之消除python中字符串中多次出现的空格

2025年05月04日22hnrainll

如果我有一个字符串

"this is   a    string" 

如何缩短它,使单词之间只有一个空格而不是多个空格? (空格个数随机)

"this is a string" 

请您参考如下方法:

您可以使用 string.split 和 "".join(list) 以合理的 pythonic 方式实现这一点 - 可能有更高效的算法,但他们赢了看起来不错。

顺便说一下,这比使用正则表达式快很多,至少在示例字符串上是这样:

import re 
import timeit 
 
s = "this    is   a     string" 
 
def do_regex(): 
    for x in xrange(100000): 
        a = re.sub(r'\s+', ' ', s) 
 
def do_join(): 
    for x in xrange(100000): 
        a = " ".join(s.split()) 
 
 
if __name__ == '__main__': 
    t1 = timeit.Timer(do_regex).timeit(number=5) 
    print "Regex: ", t1 
    t2 = timeit.Timer(do_join).timeit(number=5) 
    print "Join: ", t2 
 
 
$ python revsjoin.py  
Regex:  2.70868492126 
Join:  0.333452224731 

编译这个正则表达式确实提高了性能,但前提是你在编译后的正则表达式上调用 sub,而不是将编译后的形式作为参数传递给 re.sub:

def do_regex_compile(): 
  pattern = re.compile(r'\s+') 
  for x in xrange(100000): 
    # Don't do this 
    # a = re.sub(pattern, ' ', s) 
    a = pattern.sub(' ', s) 
 
$ python revsjoin.py   
Regex:  2.72924399376 
Compiled Regex:  1.5852200985 
Join:  0.33763718605