嘗試先進行分類。什麼是標題?這與身體文字有什麼不同?從你的例子,它看起來像一個頭與一個標點符號開始,所以考慮
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
綁起來result
你喜歡的方式。
嘗試先進行分類。什麼是標題?這與身體文字有什麼不同?在你的例子中,它看起來像一個標題以標點符號開頭,所以考慮'line.startswith(string.punctuation)' –
然後考慮逐行閱讀文件,隨時分組。這個初始解析的結果應該是列表的列表,其中每個內部列表是您打算連接在一起的文檔中的行列表。 –