用单个空格替换所有多空格

时间:2014-11-19 16:33:53

标签: python string

例如

s = "a b        c d    e                            f  "

需要缩减为

s = "a b c d e f "

现在我做这样的事情

for i in xrange(arbitrarilyHighNumber,1,-1):
    s = s.replace(" "*i," ")

但我想让它更具动感和Pythonic(并假设任意数量的空格)。如何用单个空格替换每个连续的空间阈值?

2 个答案:

答案 0 :(得分:4)

您可以使用re.sub

>>> import re
>>> s = "a b        c d    e                            f  "
>>> re.sub('\s{2,}', ' ', s)
'a b c d e f '
>>>

\s{2,}匹配两个或更多空格字符。

答案 1 :(得分:1)

因为已经给出了正则表达式的答案。您也可以使用迭代替换来完成它。

while s.find("  ") is not -1:
    s = s.replace("  ", " ")

我分裂和重新加入的原始答案摆脱了前导和尾随空格

' '.join(s.split())