首页 > 解决方案 > 循环遍历文本行直到出现字符串 // 并将所有内容写入单独的列表中

问题描述

我想遍历文本,并且每次出现 aG[i]H[i]出现时,我希望代码将其下的内容写入自己的单独列表中,直到字符串//出现,然后继续下一个。

到目前为止,这是我的代码:

ladida=[]
with open('D:/G2.txt') as f:
    namen = ("G","H")
    listencounter=0
    for line in f:
        if any(s in line for s in namen):
            listex=line.rstrip()
            ladida.append(listex)
print(ladida)
name=[]  
Name=[]  
with open('D:/G2.txt') as f:
    for i in range(len(ladida)):
        Name.append(name)
        for line in f:
            if ladida[i] in line:
                for line in iter(lambda: f.readline().rstrip(),'//'):            
                    extracted_line = line
                    extracted_list = extracted_line.split(",")
                    X = extracted_list[0]
                    print(Name[i])
                    Name[i].append(X)

然而,它只将 G3 Part 三次写入一个列表。

这是我的文本文件:

G3
0.0, 0.0, 0.0
53.50805, 19.475337, 0.0
102.458385, 37.291802, 0.0
149.937529, 54.572797, 0.0
196.472482, 71.510135, 0.0
242.662047, 88.321762, 0.0
287.744278, 104.730352, 0.0
331.155303, 120.530673, 0.0
368.926371, 134.278218, 0.0
//
G4
1.0, 1.0, 1.0
53.50805, 19.475337, 0.0
102.458385, 37.291802, 0.0
149.937529, 54.572797, 0.0
196.472482, 71.510135, 0.0
242.662047, 88.321762, 0.0
287.744278, 104.730352, 0.0
331.155303, 120.530673, 0.0
368.926371, 134.278218, 0.0
//
H1
2.0, 2.0, 2.0
53.50805, 19.475337, 0.0
102.458385, 37.291802, 0.0
149.937529, 54.572797, 0.0
196.472482, 71.510135, 0.0
242.662047, 88.321762, 0.0
287.744278, 104.730352, 0.0
331.155303, 120.530673, 0.0
368.926371, 134.278218, 0.0
//

标签: pythonlistloops

解决方案


有很多方法可以做到这一点。例如,您可以执行以下操作:

with open('D:/G2.txt','r') as f:
    ls=f.read().split('\n//\n')
    for e in range(len(ls)-1):
        if ls[e].startswith(('G','H')):
            ls[e]=ls[e][1+len(str(e))+1:].replace('\n',',').replace(' ','').split(',')
        else:
            del ls[e]
print(ls)

输出:每个块都是这个列表中的一个列表:

[['0.0', '0.0', '0.0', '53.50805', '19.475337', '0.0', '102.458385', '37.291802', '0.0', '149.937529', '54.572797', '0.0', '196.472482', '71.510135', '0.0', '242.662047', '88.321762', '0.0', '287.744278', '104.730352', '0.0', '331.155303', '120.530673', '0.0', '368.926371', '134.278218', '0.0'], ['1.0', '1.0', '1.0', '53.50805',...]]

快乐编码!

PS:对于您的下一个问题:请提供一个您希望避免误解的确切输出示例。


推荐阅读