我在文件中有这个:
1 0 2 4 3
4 6 5 2 1
4 4 5 2 1
5 6 8 5 3
-
3 2 4 0
3 2 4 2
0 7 3 3
3 3 0 2
1 3 2 2
当行是 '-'
时,我需要将每个拆分成自己的矩阵。到目前为止我做了什么:
with open(fname) as f:
content = f.readlines()
subArray = []
firstMatrix= []
for line in content:
if line.strip() == '-':
break
for digit in line.split():
subArray.append(digit)
firstMatrix.append(subArray)
但这会将矩阵的所有数字放在 '-'
之前的数组中。我尝试在其中插入 if line == '-' break
但无济于事。最终输出需要是:
[[1, 0, 2, 4, 3],
[4, 6, 5, 2, 1],
[4, 4, 5, 2, 1],
[5, 6, 8, 5, 3]]
[[3, 2, 4, 0],
[3, 2, 4, 2],
[0, 7, 3, 3],
[3, 3, 0, 2],
[1, 3, 2, 2]]
每个都保存到各自的变量中:firstMatrix、secondMatrix。
最佳答案
您可以将其实现为生成器。
def get_matrix(filename):
with open(filename, 'r') as fin:
matrix = []
for line in fin:
line = line.strip()
if line == '-':
yield matrix
matrix = []
else:
matrix.append([int(i) for i in line.split()])
else:
yield matrix # yield last matrix in case file doesn't end with '-'
>>> for m in get_matrix('matrix_file.txt'):
print(m)
[[1, 0, 2, 4, 3], [4, 6, 5, 2, 1], [4, 4, 5, 2, 1], [5, 6, 8, 5, 3]]
[[3, 2, 4, 0], [3, 2, 4, 2], [0, 7, 3, 3], [3, 3, 0, 2], [1, 3, 2, 2]]
关于python - 从文件中将数字解析为两个二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42016732/