Python如何去除文本文件行号并提取右侧数值存入列表
现有实现存在的问题
- 流程设计冗余低效:三个步骤完全割裂,依赖手动复制数据,极易出现操作失误,比如你第三步的numbers元组里已经出现了原文件不存在的11、12对应的数值,就是手动复制导致的错误
- 数据提取逻辑错误:第一步拆分每行内容时,把行号和数值全部输出,后续处理把行号(1、2、3…)也当成了目标数值,最终结果会混入无关的行号数据
- 存在无效逻辑:第二步读取main.py文件的操作和你的数据处理需求完全无关,属于多余步骤
- 筛选逻辑混乱:第三步把行号转成float后,行号3、4本身也属于3-4的区间范围,会和你真正需要提取的数值混在一起,无法得到正确结果
正确实现方案
你的核心需求是从带行号的txt文件中提取第二列的浮点数值,排序后筛选出3到4之间的结果,全程可以自动处理,不需要任何手动操作:
res_list = [] # 替换为你的实际txt文件路径 with open('data.txt', 'r', encoding='utf-8') as f: for line in f: # 跳过空行 stripped_line = line.strip() if not stripped_line: continue # 拆分后只取第二列的数值,丢弃行号 _, num_str = stripped_line.split() res_list.append(float(num_str)) # 排序 sorted_res = sorted(res_list) # 筛选3-4之间的数值,可根据需求调整是否包含边界 filtered_res = [x for x in sorted_res if 3 < x < 4] print(filtered_res)
运行上述代码直接就能得到你要的结果,不会出现手动操作导致的错误,也不会混入行号数据。
内容的提问来源于stack exchange,提问作者Michał Galka
相关产品推荐
相关产品推荐

