我有一个文件,标题可以是这样的:
===标题1 ===
文本
文本
文本
===标题2 ===
文本
文本
''标题3''
文本
文本
'''标题4'''
文本
文本
文本
我试图连接每个段落及其标题,鉴于上面的例子,最终的结果应该是这样的:
===标题1 ===文本文本
===标题2 ===文本文字
''标题3''文字文字
'''标题4'''文字文字
使用python进行此操作的最佳方法是什么?
答案 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
绑定在你的方式上。