您可以使用itertools.groupby
使用拆分成團
from itertools import groupby
with open("in.txt") as f:
# use itertools.imap for python2
grps = groupby(map(str.rstrip,f), key=lambda x: x[0] == "a")
d = {}
for k,v in grps:
if k:
k = next(v)
d[k] = list(next(grps,["", ""])[1])
print(d)
輸出::
與
"a"
開始作爲分隔符線
{'acb': ['d23', '678', 'c34'], 'aad': ['443', 'c66', '78d'], 'abc': ['123', '234', '567']}
或使用,當你發現開始a
行定期循環開始內部循環:
with open("in.txt") as f:
d,f,k = {}, map(str.rstrip, f),None
for line in f:
if line.startswith("a"):
k = line
d[k] = []
for line in f:
if line.startswith("a"):
k = line
d[k] = []
break
d[k].append(line)
elif k:
d[k].append(line)
將輸出相同。我認爲應該始終在a
開始的任何行後面都有一個段落,但如果不是list(next(grps,["", ""])[1])
,則會將該值設置爲沒有空白的列表。
讓我們看看你的代碼 – Arman
我可以給你的誠實答案:你的問題太寬泛,無法直接回答,無需爲你編寫整個程序。由於我們不是免費的代碼編寫服務,我們不會那樣做。 在python中這樣做並不是很難,但是你至少需要能夠編寫python。轉到python.org,按照基本教程。 –
嗨馬庫斯,謝謝,可能它看起來像一個家庭作業,但它不是,我是一個系統管理員,並希望在python中實現一些腳本,我問的問題只是一個問題的開始,我還有很長的路要走,但如果我能得到一些開始的幫助,那麼我應該能夠弄清楚我的自我。 – alammd