如何实现read_workers函数从workers.txt提取姓名与部门并返回列表?
实现read_workers函数的完整方案
需求回顾
- 函数
read_workers接收文件名参数,读取workers.txt中的员工信息 - 返回两个列表:第一个列表存储员工全名(名+姓),第二个列表存储对应部门,需严格保留文件中的顺序
- 目标文件格式:每个员工信息占两行(
Name:和Department:开头),空行分隔不同员工
完整代码实现
def read_workers(filename): names = [] departments = [] with open(filename) as file: # 读取所有行并过滤空行(去除首尾空白后为空的行) lines = [line.strip() for line in file if line.strip()] # 每两行对应一个员工,按步长2遍历处理 for i in range(0, len(lines), 2): # 提取姓名:分割冒号后取后半部分,清理空白 name = lines[i].split(':')[1].strip() names.append(name) # 提取部门:同姓名提取逻辑 dept = lines[i+1].split(':')[1].strip() departments.append(dept) return names, departments
代码逻辑说明
- 过滤无效行:用列表推导式读取文件所有行,同时过滤掉空行(包括只含空格的行),避免后续处理空内容
- 批量处理员工信息:因为每个员工的姓名和部门各占一行,所以用
range(0, len(lines), 2)以步长2遍历,每次处理一组员工的两行数据 - 解析内容:通过
split(':')分割每行内容,取冒号后的部分,再用strip()去除前后空白,得到干净的姓名和部门字符串 - 填充结果列表:将解析后的姓名和部门分别添加到对应的列表中,最终返回两个列表
测试验证
调用函数后,返回的结果如下:
names列表:["Richard White", "Jane Oliver", "Kim Note", "John Lee", "Jennifer Six", "Maria Cruz"]departments列表:["Marketing", "Research", "Human Resources", "Human Resources", "Production", "Production"]
内容的提问来源于stack exchange,提问作者panda
相关产品推荐
相关产品推荐

