python - 读取文本文件并将其分配给 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]]]
推荐阅读
- javascript - 用于阻止页面在新选项卡中打开的 HTML 代码
- ffmpeg - Ffmpeg 使用 cuvid 连接具有硬件加速的视频文件
- java - Rally API to retrieve corresponding test sets & test cases by applying query filter with Project ID & Iteration name?
- jenkins - How do Jenkins pipeline builds determine the workspace folder?
- python - Specifying Schema of CSV in Apache Spark
- logstash - 在 Logstash 过滤器中拥有多个 grok 模式的正确方法是什么?
- magento-1.9 - Magento 1.9 - 在订单历史页面中显示可配置的产品图片
- python - 以两种或多种方式连接到服务,在 Python 中委托方法执行
- android - TranslateAnimation 第一次不起作用
- ruby-on-rails - Rails 没有这样的文件或目录@rb_sysopen。无法从上传目录获取文件内容