【发布时间】:2021-04-30 07:02:33
【问题描述】:
我有一个如下格式的文本文件
>heading
A B C D
E F G H
I J K L
>heading
M N O P
Q R S T
>heading
U V W X
Y Z a b
...
...
除了带有标题的字符串外,每一行都有相同数量的字符串,并且每个“标题”行之间的行数不同。
我想读取文本文件以创建以下格式的 Numpy 数组:
[[[A, B, C, D], [E, F, G, H], [I, J, K, L]],
[[M, N, O, P], [Q, R, T, S]],
[[U, V, W, X], [Y, Z, a, b]]]
我想检查一行是否是“标题”并创建一个跟随它的行列表,直到下一个“标题”。问题是我不知道如何将这些列表合并到一个更大的列表中,而不会再次变成一个简单的列表。
我尝试了以下方法:
groups = []
with open('textfile.txt', 'r') as f:
test = '>heading\n'
smallgroup = [test]
for line in f:
if line != test:
smallgroup.append(line)
groups.append(smallgroup)
else:
groups.extend(smallgroup)
【问题讨论】:
-
您不能拥有该格式的 numpy 数组,因为它们的形状并不完全相同……您可以拥有一个列表列表,尽管这似乎是您正在创建的。 .. 如果文件不是那么“大”,您可以随时阅读
text = f.read(),然后使用:groups = [[line.split() for line in group.splitlines()] for group in text.split('>heading\n') if group]将其拆分