Python读取txt文件并拆分数据为两个矩阵的技术问题
问题解决:拆分文本文件为两个矩阵
输入与需求
输入文件input.txt内容:
3 3 1 3 3 | 3 2 7 8 | 4 1 5 1 | 5
需要将数据拆分为两个矩阵:
1 3 3 2 7 8 1 5 1 3 4 5
原代码问题分析
你写的代码存在三个核心问题:
main_matrix=tmp_matrix是直接赋值而非追加,循环结束后只会保留最后一行数据- 用
line[0:row+2]截取字符串的方式完全不可靠,数字位数变化时会导致截取错误 - 完全没有处理右侧子矩阵的逻辑
修正后的代码
# 打开文件并读取内容 with open("input.txt", "r") as f: # 读取第一行,获取行列数 first_line = f.readline().strip() row, col = map(int, first_line.split()) main_matrix = [] sub_matrix = [] # 读取后续每一行数据 for _ in range(row): line = f.readline().strip() # 按|分割左右两部分 left_part, right_part = line.split("|") # 处理主矩阵:分割字符串转整数列表 main_row = list(map(int, left_part.strip().split())) main_matrix.append(main_row) # 处理子矩阵:分割字符串转整数 sub_val = int(right_part.strip()) sub_matrix.append(sub_val) # 打印主矩阵 for row_data in main_matrix: print(" ".join(map(str, row_data))) print() # 打印子矩阵 for val in sub_matrix: print(val)
代码说明
- 使用
with语句自动管理文件关闭,避免资源泄漏 - 用
split("|")精准分割每行的左右两部分,替代不可靠的索引截取 - 通过
append()方法向矩阵中添加行数据,保留所有行 - 分别处理主矩阵(多列)和子矩阵(单列)的转换逻辑
内容的提问来源于stack exchange,提问作者helpmeplz
相关产品推荐
相关产品推荐

