Python 如何迭代列表并创建子列表

Python 如何迭代列表并创建子列表,python,Python,我正在逐行迭代一个文本文件,并将其生成一个列表。文本文件相对较小。我想在整个列表中循环,如果有两个星号(在两行中)相邻,则创建子列表 文本文件在星号上分隔部分,如下所示 Header * Section 1 Header: Content Content Content * * Header * Section 2 Header: Content Content Content * * 当我运行代码时,我在这行中得到一个错误 if TextFile_List[i]+TextFile_List

我正在逐行迭代一个文本文件,并将其生成一个列表。文本文件相对较小。我想在整个列表中循环,如果有两个星号(在两行中)相邻,则创建子列表

文本文件在星号上分隔部分,如下所示

Header
*
Section 1 Header:
Content
Content
Content
*
*
Header
*
Section 2 Header:
Content
Content
Content
* 
*
当我运行代码时,我在这行中得到一个错误

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...

您有一个off by one错误,当您到达列表末尾时,该错误将失败:
TextFile\u list[i+1]
。请尝试以下方法:

for i in range(len(TextFile_List) - 1):
现在,对于第二部分:如果您对迭代索引有更多的控制,这将更简单,下面是一个可能的解决方案:

i = 0
output = []
sublist = []

while i < len(TextFile_List) - 1:
    line = TextFile_List[i]
    next_line = TextFile_List[i+1]
    if line == 'Header':
        i += 2
    elif line == '*' and next_line == '*':
        output.append(sublist)
        sublist = []
        i += 2
    else:
        sublist.append(line)
        i += 1
i=0
输出=[]
子列表=[]
而i
连接两行并检查
**
的想法是有问题的(一行可能是两个星号,另一行可能是空的)。最好是用以下方式检查:

if TextFile_List[i:i+2] == ["*", "*"]:
在拆分成行之前进行拆分也可能更简单:例如,这一行将
数据
放入一个节列表,其中每个节都是一个行列表

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

尝试使用范围内的i(len(TextFile\u List)-1)。当它试图为最后一个项目执行
TextFile\u List[i+1]
时,它正在尝试查找下一个项目,并在过程中给出错误。将预期结果与索引-1错误一起发布,如果您没有删除“\n”s中的行,那么您可能需要检查
如果TextFile\u List[i]+TextFile\u List[i+1]==“*\n*\n”:
我确实使用了TextFile_List=[line.strip()用于打开的行('TestFile.txt')]用于TextFile中的行_List:line您如何处理标记为“Header”的行,它们是否是输出的一部分?谢谢,我这样做了,但我仍然不确定如何创建子列表,我只在代码中找到了子列表谢谢这解决了错误,但是没有回答关于如何创建子列表的其余问题。谢谢!这件事我已经纠结了一段时间了。成功了。
data = [section.split("\n") for
        section in myfile.read().split("*\n*\n")]