按顺序将列表中的元素分组 - python

我是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']]