读取文本文件并将其分配给 Python 中的变量

Reading text file and assigning it to a variable in Python

我正在尝试读取具有以下结构的文本文件:

BUS 0   
0   1   2   3   
0   4   1   9   2   3   
BUS 1  
0   1   9   2   3   
0   1   2   3   
0   1   2   3   

它基本上是一个 3D 列表,其中嵌套的 2D 列表是列数和行数不相等的矩阵。第一个索引由字符串“BUS”表示,后跟一个数字。接下来的行对应于一个二维列表,每一行都是一个列表,直到下一个“BUS”字符串。我需要将此文本文件中的数字分配给 Python 中的 3D 列表。上面给出的例子应该翻译成:

[ [ [0,1,2,3],[0,4,1,9,2,3] ], [ [0,1,9,2,3],[0,1, 2,3],[0,1,2,3] ] ]

在此先感谢您的帮助。

您可以尝试以下方法:

data = []

with open("file.wtv") as file_in:
    for line in file_in:
        try:
            row = [*map(int, line.strip().split())]
            data[-1].append(row)
        except ValueError:
            data.append([])

data
# [[[0, 1, 2, 3], [0, 4, 1, 9, 2, 3]], 
#  [[0, 1, 9, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]]

您需要编写一个简单的解析器:

test = '''BUS 0
0 1 2 3
0 4 1 9 2 3
BUS 1
0 1 9 2 3
0 1 2 3
0 1 2 3'''

out = []
for line in test.split('\n'):
    if line.startswith('BUS'):
        out.append([])
    else:
        out[-1].append(list(map(int, line.split())))

输出:

[[[0, 1, 2, 3], [0, 4, 1, 9, 2, 3]],
 [[0, 1, 9, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]]

来自文件:

with open('file.txt') as f:
    out = []
    for line in f:
        if line.startswith('BUS'):
            out.append([])
        else:
            out[-1].append(list(map(int, line.split())))