首页 > 解决方案 > 读取文本文件并将其分配给 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] ] ]

提前感谢您的帮助。

标签: pythonpython-3.xlistread-text

解决方案


您可以尝试以下方法:

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

推荐阅读