5

如何去除双空格并留下新行?没有可能re吗?

如果我有这样的事情:

string = '   foo\nbar  spam'

我需要得到:

'foo\nbar spam'

' '.join(string.split())删除所有空格,包括新行:

>>> ' '.join(string.split())
'foo bar spam'

' '.join(string.split(' '))没做什么。

4

3 回答 3

9
>>> text = '   foo\nbar      spam'
>>> '\n'.join(' '.join(line.split()) for line in text.split('\n'))
'foo\nbar spam'

这将其分成几行。然后它用空格分割每一行并用单个空格重新加入。然后它重新加入行。

于 2013-03-27T09:07:40.220 回答
2
text = [' '.join(i.split()) for i in text.split('\n') if not i.isspace()]
text = '\n'.join(text)                                                   
于 2013-03-27T11:23:43.810 回答
2

可以使用 strip 或 lstrip 函数:

line = '   foo\nbar  spam'
while '  ' in line:
    line = line.replace('  ', ' ')
line = line.strip(' ')
于 2013-03-27T09:10:41.357 回答