Python转txt内容为整数报错invalid literal for int() base10如何解决
错误原因
- 分隔符使用错误:文本文件中数字以逗号分隔,代码中调用无参数的
split()是按空白字符分割,导致每一行处理后得到的是['0,0,1']这类包含完整逗号拼接字符串的子列表,而非单个数字的字符串。 - 嵌套列表遍历错误:
list_of_lists是由每一行的子列表组成的嵌套列表,直接遍历list_of_lists拿到的是子列表而非单个数字字符串,将带逗号的完整字符串传给int()转换时,int()无法识别带逗号的内容,因此触发报错。
解决方法
- 分割行内容时指定分隔符为逗号,调用
split(',')将每一行的数字拆分为单独的字符串元素。 - 求和前展开嵌套列表,遍历所有单个数字字符串后再转换为整数累加。
修正后完整代码
# 推荐用with语句自动管理文件句柄,无需手动调用close with open("adj_matrix.txt", "r") as data: list_of_lists = [] for line in data.readlines(): stripped_line = line.strip() # 指定按逗号分割 line_list = stripped_line.split(',') list_of_lists.append(line_list) print(list_of_lists) # 先展开嵌套列表再转整数求和 total = sum([int(num) for line in list_of_lists for num in line]) print(total)
如果需要更精简的写法,也可以在读取行时直接完成累加:
with open("adj_matrix.txt", "r") as data: total = 0 for line in data: total += sum(int(num) for num in line.strip().split(',')) print(total)
内容的提问来源于stack exchange,提问作者Kyle Tempone
相关产品推荐
相关产品推荐

