如何将文本文件读取的数字转为整数?Python TypeError报错解决
问题分析与解决
错误原因
你遇到的TypeError根源在于:
- 你的
ChangeSet.txt每行只有单个数字,没有逗号,执行line.split(',')后会得到单元素列表(比如['30000']),经过列表推导后inner_list变成[30000],最终list_of_lists是嵌套列表结构(比如[[30000], [30002], ...])。 - 循环里
ch = int(list_of_lists[i])试图把列表转成整数,这不符合int()的参数要求,因此触发错误。
解决方案
根据你的需求,有两种简单的修正方式:
方式一:直接读取为整数列表(推荐,更简洁)
既然每行只有一个数字,无需嵌套列表,直接将每行转成整数存入普通列表:
list_of_numbers = [] with open(r'C:\MentorUTTFVC\ChangeSet.txt') as f: for line in f: # 去除首尾空白,跳过空行 cleaned_line = line.strip() if cleaned_line: list_of_numbers.append(int(cleaned_line)) # 后续循环直接取整数即可 for num in list_of_numbers: ch = num # 这里编写你的后续操作逻辑
方式二:保留嵌套列表结构,取子列表内的元素
如果必须保留原嵌套列表格式,循环时取每个子列表的第一个元素即可:
list_of_lists = [] with open(r'C:\MentorUTTFVC\ChangeSet.txt') as f: for line in f: # 过滤空字符串,处理可能存在的空行 inner_list = [int(elt.strip()) for elt in line.split(',') if elt.strip()] list_of_lists.append(inner_list) length = len(list_of_lists) for i in range(length): # 取子列表的第一个元素 ch = list_of_lists[i][0] # 这里编写你的后续操作逻辑
为什么硬编码正常?
硬编码时你使用的是单个整数(比如ch = int(30000)),类型符合int()的参数要求;而读取文件后得到的是嵌套列表,类型不匹配,因此报错。
内容的提问来源于stack exchange,提问作者Sijith
相关产品推荐
相关产品推荐

