折叠连续的空格

时间:2012-07-22 19:13:45

标签: python regex whitespace

如何在python中折叠run-on空格?

"a b   c   d      e" --> "a b c d e"

3 个答案:

答案 0 :(得分:14)

假设

s = 'a b   c   d      e'

然后

' '.join(s.split())
'a b c d e'

将为您提供指定的输出。

这可以通过使用split()将字符串分解为单个字符['a', 'b', 'c', 'd', 'e']的列表,然后使用join()函数将其中的单个空格再次连接到一个字符split()串。 {{1}}也会处理任何前导或尾随空白。

基于 Simple比复杂的(Zen of Python)更好,以避免正则表达式“two problem”问题:)

答案 1 :(得分:5)

使用正则表达式(因为标记):

re.sub('\s+', ' ', "a b   c   d      e")

答案 2 :(得分:0)

如果您不关心前一个元素的前导空格和最后一个元素的尾随空格,请使用:

re.sub('\s+(?=\s)', '', str)

如果你这样做,那么删除那些前导和尾随空格的解决方案是:

re.sub('(?:^\s+|\s+(?=\s)|\s+$)', '', str)