使用GROUPBY:
from itertools import groupby
with open("test.txt") as f:
for k, v in groupby(map(str.strip, f), lambda x: not x.startswith("#")):
if k:
print(list(filter(None, v)))
['ls -1', 'sudo apt-get install vim']
['sudo apt-get install ruby']
對於python2使用itertools.imap
和itertools.ifilter
您可以創建一個列表的列表與列表理解:
from itertools import groupby
with open("test.txt") as f:
out = [list(filter(None, v)) for k, v in groupby(map(str.strip, f), lambda x: not x.startswith("#")) if k]
print(out)
['ls -1', 'sudo apt-get install vim'], ['sudo apt-get install ruby']]
如果你想然後保存,所以你可以按名稱訪問使用的字典:
from itertools import groupby
from itertools import count
with open("test.txt") as f:
d = {}
cn = count(1)
for k, v in groupby(map(str.strip, f), lambda x: not x.startswith("#")):
if k:
d["list_{}".format(next(cn))] = list(filter(None, v))
print(d)
{'list_2': ['sudo apt-get install ruby'], 'list_1': ['ls -1', 'sudo apt-get install vim']}
您好,歡迎計算器!你實際上沒有問過一個問題,那麼你正在努力完成哪部分任務?如果你展示你迄今爲止編寫的代碼,並解釋它不是在做你期望的代碼,那也許是最好的。那麼我們有可能找出它有什麼問題。 – 2015-03-25 12:07:58
謝謝蒂姆。 這是以前的代碼,我正在修改它基於這裏的人給出的輸入。 DEF提取物(自,OUTFILE,模式): F =開放(OUTFILE,模式) 對於C在self.contents: 如果不是c.startswith( 「#」): 命令= c.rstrip() #f.write(commands +'\ n') self.clist.append(commands) f。關閉() – 2015-03-25 15:10:32