每三行匹配一个标识符并替换一个标识符最有效的方法是什么?

2024-09-26 22:55:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

\n
    page: N
\n

其中N是数字。这就是我的文件的样子,我还尝试了一个简单的^{}。但是,这个函数混淆了,并且没有给我预期的格式,比如this。你知道如何用某种标识符来替换空格吗?只是试着解析它们并获得一些信息(页面)的位置?。你知道吗

我也试过这个:

进口re

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

Tags: 文件函数retxt格式page代表数字
1条回答
网友
1楼 · 发布于 2024-09-26 22:55:31

如果格式与问题描述中所述的格式相同:

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)

相关问题 更多 >

    热门问题