如何在每次出现时将文本文件中的多个空白行减少为一行?
我已将整个文件读入一个字符串,因为我想在行尾进行一些替换。
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/