Python 3.x 如何创建一个行列表,直到一个单词出现在行中,然后再次开始一个新的行列表,直到一个单词出现

Python 3.x 如何创建一个行列表,直到一个单词出现在行中,然后再次开始一个新的行列表,直到一个单词出现,python-3.x,Python 3.x,我有一个有坐标线的文件 L1A 10.73 -36.14 L1B 15.30 -54.70 Segment L2A 17.03 -43.80 L2B 17.90 -49.55 L4A 03.00 -54.00 Segment L3A 07.80 -36.00 L3B 03.00 -36.00 我要做的是为单词段之间的行创建一个列表 所以L1A和L1B将是一个列表,L2A和L2B L4A将是第二个列表,等等 那么我如何创建一个循环或其他东西,以便它附加一个列表,直到它

我有一个有坐标线的文件

L1A  10.73  -36.14
L1B  15.30  -54.70
Segment
L2A  17.03  -43.80
L2B  17.90  -49.55
L4A  03.00  -54.00
Segment
L3A  07.80  -36.00
L3B  03.00  -36.00
我要做的是为单词段之间的行创建一个列表

所以L1A和L1B将是一个列表,L2A和L2B L4A将是第二个列表,等等

那么我如何创建一个循环或其他东西,以便它附加一个列表,直到它到达单词“Segment”,然后它打开一个新列表,并附加到下一个单词“Segment”,依此类推

第一个列表将命名为coords1,第二个coords2,。。。。合作社

这就是我所拥有的,但这只会不断更新“coords”,而不是停留在“Segment”并打开一个新的coords列表

coord = []
with open('kml_coastrica.txt', 'r') as f:
    for line in f:
        if not 'Segment' in line:
            newline = line.split('  ')
            lon = int(newline[1])
            lat = int(newline[2])
            coords.append([lat,lon])

您的问题是,您总是将内部列表附加到同一个列表-您需要一个级别的嵌套:

  • 创建一个列表
  • 迭代文件行,
  • 将行拆分为坐标(我认为您按顺序将它们混淆了,请检查)
  • 将每个坐标添加到列表中
  • 将每行列表添加到结果的最后一个内部列表中
  • 如果您点击了一个新的
    “段”
    -在结果中添加一个新的内部列表
  • 继续,直到完成:
  • 创建文件:

    进程文件:

    输出:

    [[[-36.14, 10.73], [-54.7, 15.3]], 
     [[-43.8, 17.03], [-49.55, 17.9], 
      [-54.0, 3.0]], [[-36.0, 7.8], [-36.0, 3.0]]]
    

    如果您的数据以
    'Segment'
    停止,您的最后一个列表元素将是空的。

    我如何使它变成这样的输出…[[(-36.14,10.73),(-54.7,15.3)],[(-43.8,17.03),(-49.55,17.9),(-54.0,3.0)],[(-36.0,7.8),(-36.0,3.0)]您将坐标添加到元组中,而不是列表:
    结果[-1].append((lat,lon))
    …这可能会有帮助:和
    result = [[]]                 # start with an empty inner list
    with open("t.txt") as f:
        for line in f:
            if line.strip() == "Segment":
                result.append([])           # add new empty list at end
            else:
                data = line.strip().split()
                lon = float(data[1])        # you need floats - not int's
                lat = float(data[2])        # same here: floats
    
                # add data point to last inner list
                result[-1].append([lat,lon]) # I think you got them mixed here ?
    
    print(result)
    
    [[[-36.14, 10.73], [-54.7, 15.3]], 
     [[-43.8, 17.03], [-49.55, 17.9], 
      [-54.0, 3.0]], [[-36.0, 7.8], [-36.0, 3.0]]]