我正在处理一些没有结构的 .txt 文件(它们很困惑),它们代表许多页面。为了给它们一些结构,我想确定页数,因为文件本身没有它们。这可以通过用一些注释替换每三个换行符来完成,例如:
\n
page: N
\n
其中 N
是数字。这就是我的文件的样子,我还尝试了一个简单的 replace
。然而,这个函数令人困惑,并且没有给我预期的格式,如 this 。 。知道如何用某种标识符替换空格,只是为了尝试解析它们并获取某些信息(页面)的位置吗?
我也尝试过这个:
导入重新
replaced = re.sub('\b(\s+\t+)\b', '\n\n\n', text)
print (replaced)
最佳答案
如果格式与您在问题描述中所述的一样规则:
Replace every occurrence of three newlines
\n
withpage: 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)
关于python - 每三行新行匹配和替换标识符的效率最高的是哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39981438/