python - 从文件中将数字解析为两个二维数组

标签 python arrays

我在文件中有这个:

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/

相关文章:

javascript - PHP从xml文件中解析json

c - 如何使用分治法以及如果一个子数组占多数,组合数组占多数的事实来找到多数元素?

动态创建导入时的 Python 日志记录模块

python - Flask 中的 Sphinx autodoc ImportError : no module named

python - 如何使用SQS(亚马逊简单队列服务)实现优先级队列

python - 如何将日期列表转换为字符串列表

java - Java中基于某些约束打印字符串(字符串和数组)(压缩解压缩)

python - 使用带天体的已识别恒星拟合 WCS 坐标解

c - 如何检查数组C中元素的数据类型

ios - 如何从集合属性中提取并快速插入到新的集合模型中