如何基于模板将文件拆分为多个部分?

时间:2020-05-07 09:01:08

标签: python python-3.x regex text split

我正在分析具有已知结构的文本文件。在进入Rube-Goldberg机器类型的解决方案之前,我想检查是否存在解决此类问题的标准方法。

文件结构为

whatever text, empty lines more text

long text empty lines
whatever
← one empty line
line 1 of final block of text
line 2 of final block of text
line 3 of final block of text
← more lines, the number is not defined
← new line and end of file

所以这是自由文本,直到一个空行,然后是一行单行文本,没有空行,并且文件的末尾出现在新行上。

我想将该文件分为两个主要部分:自由文本部分和块部分。然后将分别对两者进行分析。

我的第一个希望是,将有某种“文件模式匹配”模块,在该模块中,我将类似于上述方式描述文件并检索我的两部分。我刚刚发现了模板(反之亦然:描述文件的内容以便创建文件)。

想到的下一个解决方案是regex。我正在努力的部分是描述“只有一行返回的文本块”。怎么描述呢?

通常-是否有解决该问题的更简单方法?(仅指出这一点很好,很可能我只是从未遇到过这种方法)。

我的直觉是应该从下至上对文件进行分析-如果没有其他明显的解决方案,这可能就是我将要开发的解决方案。

1 个答案:

答案 0 :(得分:2)

这对我有用:

>>> a = '''whatever text, empty lines more text
... 
... long text empty lines
... whatever
... ← one empty line
... line 1 of final block of text
... line 2 of final block of text
... line 3 of final block of text
... ← more lines, the number is not defined
... ← new line and end of file
... '''
>>> a.rsplit('\n\n', 1)
['whatever text, empty lines more text', 'long text empty lines\nwhatever\n\xe2\x86\x90 one empty line\nline 1 of final block of text\nline 2 of final block of text\nline 3 of final block of text\n\xe2\x86\x90 more lines, the number is not defined\n\xe2\x86\x90 new line and end of file\n']
>>>