python - 每三行新行匹配和替换标识符的效率最高的是哪一个?

标签 python regex python-3.x nlp text-processing

我正在处理一些没有结构的 .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 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)

关于python - 每三行新行匹配和替换标识符的效率最高的是哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39981438/

相关文章:

python - 使用 beautifulsoup 从维基百科表中获取列

python - 编码器一热混淆

python - psycopg2 - 将字典列表插入 PostgreSQL 数据库。死刑太多?

jQuery、匹配和正则表达式

python - 查找一个列表的任何元素在另一个列表中出现的索引,重复项

python-3.x - 将 IntVar() 值转换为 Int

python - 从 *文件夹名称* 导入 *变量* Python 3.4.2

Python 2 与 Python 3 字符串 pickle

c# - 如何在正则表达式中检查波斯字符格式

python - 如何根据行内容将行拆分为 0、1 或 2 个数组