使用Python连接标题下的段落

时间:2017-01-25 20:15:00

标签: python regex

我有一个文件,标题可以是这样的:

===标题1 ===

文本

文本

文本

===标题2 ===

文本

文本

''标题3''

文本

文本

'''标题4'''

文本

文本

文本

我试图连接每个段落及其标题,鉴于上面的例子,最终的结果应该是这样的:

===标题1 ===文本文本

===标题2 ===文本文字

''标题3''文字文字

'''标题4'''文字文字

使用python进行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

首先尝试分类。什么构成标题?这与正文有什么不同?从您的示例中,看起来标题以标点符号开头,请考虑

import string

def is_header(line):
    return line.startswith(string.punctuation)

然后考虑逐行读取文件,随时分组。这个初始解析的结果应该是一个列表列表,其中每个内部列表是您打算连接在一起的文档中的行列表。

parsed_lines = []
cur_p = []
with open(filename) as f:
    for line in f:
        if is_header(line) and cur_p:
            parsed_lines.append(cur_p)
            cur_p = []
        else:
            cur_p.append(line.strip())

现在你应该有一个列表列表,如:

[ ["===Some Header===", "body text", "more body text", "even more"],
  ["''Another header''", "wow such body", "many text"],
  ... ]

您可以使用str.join将它们绑在一起。

result = []

for p in parsed_lines:
    result.append(' '.join(p))

这会给你

# result is
["===Some Header=== body text more body text even more",
 "''Another header'' wow such body many text", ... ]

我确定你可以弄清楚如何使用str.join以{1}的方式将result绑定在你的方式上。