Skip to main content
 首页 » 编程设计

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

2025年05月04日12leader

我在文件中有这个:

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]]