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

Python读取矩阵文本文件触发ValueError: invalid literal报错求解

错误产生原因
  • 核心报错原因:你尝试直接将带逗号分隔符、换行符的字符串'2,1,1,3\n'传入int()做整数转换,该字符串不符合纯十进制整数的格式,因此触发ValueError。
  • 代码还存在其他问题:
    1. 语法错误:n = (intmaze[0])是错误写法,你大概率漏写了括号,原本想写int(maze[0])
    2. 逻辑错误:你想把矩阵的第一行内容当做矩阵边长n使用,但实际你的文本文件第一行就是矩阵数据,没有单独存储边长信息;且后续取矩阵行的逻辑maze[1:(n*n)+1]也不对,4行4列的矩阵只需要取4行,不是取n*n行
    3. 类构造函数写法错误:Python的类构造方法是双下划线包裹的__init__,你写的单下划线_init_不会作为构造函数生效,且构造函数参数里self. row的点是语法错误,应该为逗号
    4. 文件关闭方法调用错误:file.close少了括号,实际不会执行关闭操作,容易造成资源泄漏
修复后的代码

假设你的需求是读取整个文本中的4行4列矩阵,每行元素按逗号拆分存储,参考代码如下:

# 先修正类构造函数
class MazeNode: # 替换为你自己的类名即可
    def __init__(self, row, col, data):
        self.child = {}
        self.row = row
        self.col = col
        self.data = data
        self.active = True

# 用with上下文管理器读取文件,自动处理资源关闭
matrix = []
with open('filename.txt', 'r', encoding='utf-8') as f:
    for line in f:
        # 先去除首尾换行、空白符,再按逗号拆分元素
        line_items = line.strip().split(',')
        matrix.append(line_items)

# 此时matrix就是读取到的二维列表,可按需操作
n = len(matrix) # 获取矩阵行数
full = matrix # 所有矩阵行内容

如果你的文本文件原本设计是第一行单独存矩阵边长,下面存n行矩阵内容,需要先修改文本文件第一行加4,再使用如下读取逻辑:

with open('filename.txt', 'r', encoding='utf-8') as f:
    lines = [line.strip() for line in f]
n = int(lines[0])
matrix = [line.split(',') for line in lines[1:1+n]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:36:02