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

