每三个新行用标识符匹配和替换哪个最有效?
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)
我正在处理一些没有结构的 .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
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)