5

我将如何折叠 python 中的连续空白?

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

3 回答 3

14

假设

s = 'a b   c   d      e'

然后

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

会给你指定的输出。

这通过使用split()将字符串分解为单个字符的列表,['a', 'b', 'c', 'd', 'e']然后使用join()函数将它们再次连接成一个字符串。还负责处理任何前导split()或尾随空白。

基于简单胜于复杂(Python 之禅)以避免正则表达式“两个问题”问题:)

于 2012-07-22T19:14:53.163 回答
5

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

re.sub('\s+', ' ', "a b   c   d      e")
于 2012-07-22T19:18:32.280 回答
0

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

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

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

re.sub('(?:^\s+|\s+(?=\s)|\s+$)', '', str)
于 2012-07-22T19:36:15.533 回答