Python读取txt提取每行职位名称 解决substring not found报错
问题分析与修复方案
现有代码的错误点
- 读取逻辑冲突:同时用
for循环迭代文件对象、readline()方法读取内容,文件迭代本身就会逐行读取内容,循环内再次调用readline()会导致跳行读取,最终读到空字符串,空字符串查找,时就会触发「substring not found」报错。 readline()参数使用错误:readline()的入参是单次读取的最大字符数,不是行号,传入逐次累加的Beg_line完全不符合方法设计逻辑,无法实现读取指定行的需求。- 提取逻辑错误:每行内容以
,,开头,第一个逗号的位置在索引0之后,你截取0到第一个逗号的内容只能得到空字符串,完全无法提取到中间的职位名称。
修复代码
推荐用with语法自动管理文件句柄,按逗号分割后过滤空值的方式提取内容,不管前后有多少多余逗号都可以正常识别,适配任意职位名、数值组合场景:
with open("Jobs.txt", "r", encoding="utf-8") as file: for line in file: # 按逗号分割后过滤掉空值和多余空格 parts = [item.strip() for item in line.split(',') if item.strip()] if len(parts) >= 2: job_name, count = parts[0], parts[1] print(f"职位:{job_name},人数:{count}")
运行后输出结果为:
职位:Janitors,人数:3 职位:Programers,人数:4 职位:Secretaries,人数:1
内容的提问来源于stack exchange,提问作者Rimants Šiupienis
相关产品推荐
相关产品推荐

