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