每三个新行用标识符匹配和替换哪个最有效?

Which is the most efficent of matching and replacing with an identifier every three new lines?

我正在处理一些没有结构的 .txt 文件(它们很乱),它们代表许多页面。为了给它们一些结构,我想确定页数,因为文件本身没有它们。这可以通过用一些注释替换每三个换行符来完成,例如:

\n
    page: N
\n

其中 N 是数字。这就是我的文件的样子,我也尝试了一个简单的 replace. However, this function confuses and does not give me the expected format which would be something like this。知道如何用某种标识符替换空格,只是为了尝试解析它们并获取某些信息(页面)的位置吗?

我也试过这个:

重新导入

replaced = re.sub('\b(\s+\t+)\b', '\n\n\n', text)
print (replaced)

如果格式像您在问题描述中所说的那样规则:

Replace every occurrence of three newlines \n with page: N

您不必使用 re 模块。像下面这样简单的事情就可以解决问题:

>>> s='aaaaaaaaaaaaaaaaa\n\n\nbbbbbbbbbbbbbbbbbbbbbbb\n\n\nccccccccccccccccccccccc'
>>> pages = s.split('\n\n\n')
>>> ''.join(page + '\n\tpage: {}\n'.format(i + 1) for i, page in enumerate(pages))
'aaaaaaaaaaaaaaaaa\n\tpage: 1\nbbbbbbbbbbbbbbbbbbbbbbb\n\tpage: 2\nccccccccccccccccccccccc\n\tpage: 3\n'

虽然我怀疑您的格式没有那么规则,但您必须包含更多详细信息,然后我才能给出一个好的答案。

如果你想用乱七八糟的空格(我将其定义为 至少 三个换行符与任何其他空格混合)进行拆分,你可以替换 s.split('\n\n\n')与:

re.split(r'(?:\n\s*?){3,}', s)