You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将输入文件中的数据存储到多个矩阵中?

处理多矩阵文本文件的Python实现

核心思路

先将文件内容按矩阵分隔符分割为独立的矩阵块,再逐个解析每个块的元信息(名称、行数、列数)和数据行,最终将矩阵存储到字典(推荐)或单独变量中。

代码实现

情况1:矩阵之间用空行分隔(即示例中的[space]代表空行)

# 读取文件内容
with open('matrices.txt', 'r') as f:
    content = f.read()

# 按空行分割矩阵块,过滤掉空的块(处理首尾空行)
matrix_blocks = [block.strip() for block in content.split('\n\n') if block.strip()]

# 用字典存储矩阵,键为矩阵名称(如'A'),值为二维列表形式的矩阵
matrices = {}

for block in matrix_blocks:
    lines = block.split('\n')
    # 解析第一行的名称、行数、列数
    name, row_count, col_count = lines[0].split()
    row_count = int(row_count)
    col_count = int(col_count)
    
    # 解析数据行,转换为整数矩阵
    matrix = []
    for line in lines[1:1+row_count]:
        # 分割每行的元素并转成整数
        elements = list(map(int, line.split()))
        # 校验每行元素数量是否匹配列数,避免格式错误
        if len(elements) != col_count:
            raise ValueError(f"矩阵{name}的行元素数量与声明的列数不匹配")
        matrix.append(elements)
    
    matrices[name] = matrix

# 如需单独变量,可从字典中取出
matrixA = matrices['A']
matrixB = matrices['B']
matrixC = matrices['C']

# 测试输出
print("matrixA:", matrixA)
print("matrixB:", matrixB)

情况2:矩阵之间用字面的"[space]"字符串行分隔

只需修改分割矩阵块的代码:

# 替换空行分割为"[space]"行分割
matrix_blocks = [block.strip() for block in content.split('\n[space]\n') if block.strip()]

额外说明

  1. 推荐用字典存储:相比单独创建matrixA、matrixB等变量,字典更灵活,尤其当矩阵数量不确定时,无需硬编码变量名。
  2. 动态创建变量(不推荐):如果一定要自动生成单独变量,可使用globals(),但这种方式不利于代码维护:
    for name, matrix in matrices.items():
        globals()[f'matrix{name}'] = matrix
    
  3. 格式校验:代码中加入了行元素数量与列数的校验,若文件中存在格式错误(比如声明3列但实际每行有4个元素),会直接抛出错误,方便排查问题。

内容的提问来源于stack exchange,提问作者helpmepls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:20:32