如何遍历列表并创建子列表

时间:2019-07-30 11:55:23

标签: python

我要逐行遍历列表中的文本文件。文本文件相对较小。我想遍历整个列表并创建子列表(如果彼此相邻的有两个星号(2行))。

文本文件将像这样的星号分开。

Header
*
Section 1 Header:
Content
Content
Content
*
*
Header
*
Section 2 Header:
Content
Content
Content
* 
*
TextFile_List = [line.strip() for line in open('TextFile.txt')]
for line in TextFile_List: line

output = []
for i in range(len(TextFile_List)):  #Iterates through all the lines in the list
    if TextFile_List[i]+TextFile_List[i+1]=="**":  #If * new line * are consecutive #Create sublist?/ Do something
        pass

运行代码时,我在此行中收到错误消息

if TextFile_List[i]+TextFile_List[i+1]=="**":

我认为列表索引超出范围,我认为是在i + 1部分。

理想情况下,我希望每个部分都具有自己的列表。 因此,第1节的标题,内容,内容将是其自己的列表。

像这样

List1 = ["Section 1 Header", "Content", "Content", "Content"]
List2 = ["Section 2 Header", "Content", "Content", "Content"]
etc...

2 个答案:

答案 0 :(得分:2)

您有一个错误的错误,当您到达列表的末尾时,将失败:use-proxy-protocol: "true"。尝试以下方法:

TextFile_List[i+1]

现在,对于第二部分:如果您对迭代索引有更多的控制,这将更简单,这是一种可能的解决方案:

for i in range(len(TextFile_List) - 1):

答案 1 :(得分:0)

连接两行并检查**的想法是有问题的(一行可能是两个星号,而另一行可能是空的)。更好的方法是检查类似的东西:

if TextFile_List[i:i+2] == ["*", "*"]:

在分成几行之前进行此拆分也可能更简单:例如,这种单行代码将data中的节列表放入其中,每个节都是行列表

data = [section.split("\n") for
        section in myfile.read().split("*\n*\n")]