如何在每次出现时将文本文件中的多个空白行减少为一行?

我已将整个文件读入一个字符串,因为我想在行尾进行一些替换。

with open(sourceFileName, 'rt') as sourceFile:
    sourceFileContents = sourceFile.read()

这似乎不起作用
while '\n\n\n' in sourceFileContents:
    sourceFileContents = sourceFileContents.replace('\n\n\n', '\n\n')

而且也不是
sourceFileContents = re.sub('\n\n\n+', '\n\n', sourceFileContents)

剥离它们很容易,但是每次遇到空白行时,我都希望将多个空白行减少为一个空白行。

我觉得我已经接近了,但是无法正常工作。

最佳答案

这是可以达到的,但也许有些行不是完全空白(即,它们只有空白字符,使空白看起来很空白)。您可以尝试删除换行符之间所有可能的空格。

re.sub(r'(\n\s*)+\n+', '\n\n', sourceFileContents)

编辑:意识到第二个'+'是多余的,因为\s *将在第一个和最后一个之间捕获换行符。我们只想确保最后一个字符绝对是换行符,所以我们不会从具有其他内容的行中删除前导空格。
re.sub(r'(\n\s*)+\n', '\n\n', sourceFileContents)

编辑2
re.sub(r'\n\s*\n', '\n\n', sourceFileContents)

应该是一个更简单的解决方案。我们真的只想在我们的两个 anchor 定换行符之间捕获任何可能的空间(包括中间的换行符),这将使单个空白行并将其折叠为仅两个换行符。

关于python - 将多个空行减少为单个(Python方式),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28901452/

10-12 14:03