Python:如何从文本文件提取数据并存入列表?求更优方案
优化方案及原代码问题说明
首先要指出你原代码存在的bug:处理10这类多位数时,temp_x = x[2].replace(",","")会把"2,4,5,8,9,10,12,45"变成"24589101245",循环遍历每个字符时,10会被拆成1和0两个单独整数存入列表,这和你的需求不符。
下面是几种更简洁、健壮的实现方式:
方法一:针对固定格式的简洁写法
用with语句自动管理文件(无需手动关闭),直接提取等号后的值并转换:
x_values = [] y_values = [] with open('data.txt', 'r') as file: # 处理x行 x_line = file.readline().strip() # 分割出等号后的部分,按逗号拆分字符串,再批量转整数 x_values = [int(num) for num in x_line.split('=')[1].strip().split(',')] # 处理y行 y_line = file.readline().strip() y_values = [int(num) for num in y_line.split('=')[1].strip().split(',')]
方法二:通用扩展写法(支持更多变量)
如果以后文件中可能新增其他变量,这种写法扩展性更强:
data = {} with open('data.txt', 'r') as file: for line in file: line = line.strip() if not line: # 跳过空行 continue # 按第一个等号分割变量名和值部分 var_name, values_part = line.split('=', 1) var_name = var_name.strip() # 拆分每个数值字符串并转整数 values = [int(num.strip()) for num in values_part.split(',')] data[var_name] = values # 提取需要的x、y值 x_values = data['x'] y_values = data['y']
为什么这些方法更优
- 用
with语句操作文件,自动处理文件关闭,避免资源泄漏 - 直接按逗号拆分数值字符串,正确保留
10这类多位数的完整性 - 用列表推导式替代手动循环
append,代码更简洁易读 - 通用写法可适配更多变量行,无需修改核心逻辑
内容的提问来源于stack exchange,提问作者SMA
相关产品推荐
相关产品推荐

