我正在尝试从文件HD.txt中读取多维数组,并将数据存储在数组中进行计算。 HD.txt如下所示:
[[[27],[0],[0],[0],[0],[0],[0]],
[[0],[0],[0],[0],[0],[0],[0]],
[[0],[0],[0],[0],[0],[0],[0]]]
[[102],[0],[0],[0],[0],[0]]
我想读取这两个数组并将其存储在两个单独的数组中。对于例如HD.txt中的第一个数组是3维整数数组(3X7X1数组),第二个数组是2d整数数组。我想分别将它们读作3d和2d数组。我不是python的专家,下面是我尝试读取第一个数组。毋庸置疑,它并没有像我想的那样成功。非常感谢您对此事的任何帮助。 感谢
with open("HD.txt", "r") as f:
for line in f.readlines():
S = line.split(' ')
答案 0 :(得分:0)
使用line.split()
时,您需要一个介于每个值之间的字符。由于HD.txt
在每个值之间都有逗号,因此您只需移除每个[
和]
字符,然后调用split()
。以下是一个例子。
arrayOne = []
arrayTwo = []
next = False
with open("HD.txt", "r") as f:
for line in f.readlines():
if line[0] == '\n':
next = True
else:
line = line.replace("[", "")
line = line.replace("]", "")
line = line.replace("\n", "")
for i in line.split(','):
if next:
arrayOne.append(i)
else:
arrayTwo.append(i)
如果该行为空,则表示第一个字符为\n
,您可以开始收集第二个数组。确保还删除换行符。
答案 1 :(得分:0)
由于您可以控制数据生成,我建议您删除括号,只显示由空格(对于列)和返回(对于行)分隔的数据。它会引导您查看HD.txt
的内容:
27 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
102 0 0 0 0 0
然后要重建数组,请使用split()
包中的shlex
函数(https://docs.python.org/2/library/shlex.html)。它将东西从空间中分离出来。但是,在您的情况下,您必须将每个项目转换为int
。这导致我们:
import shlex
array = []
with open("HD.txt", "r") as f:
i = 0
for line in f.readlines():
array[i] = shlex.split(line)
i += 1
不要忘记使用int()