我是python的新手。有一个复杂的任务需要处理。
我有一个文本文件,其中包含由注释和命令分隔的部分。文件中有多个部分。我想提取与它自己的部分相关的命令,并从中创建一个列表。
范例:
test.txt
#section 1
ls -1
sudo apt-get install vim
#section 2
sudo apt-get install ruby
输出:
list1 = ['ls -1','sudo apt-get install vim']
list2 = ['sudo apt-get install ruby']
python大神给出的解决方案
您的问题是一个简单的分组练习,只需跟踪某节的开头即可,以指示应将后续行添加到新列表中,从而轻松实现
实作
output = [[]]
with open("test.txt") as fin:
#from itertools import imap
for line in map(str.strip, fin):
#for line in imap(str.strip, fin):
if line:
if line.startswith('#'):
output.append([])
continue
output[-1].append(line)
output = output[1:]
假设您的文件包含
test.txt
#section 1
ls -1
sudo apt-get install vim
#section 2
ls -lrt
sudo apt-get install ruby
输出
[['ls -1', 'sudo apt-get install vim'], ['ls -lrt', 'sudo apt-get install ruby']]