You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在文件中比较日期,筛选1995年后人员并扣减10%薪资?

问题

现有CSV格式的员工数据(示例5条):

A1234567, Amen, Mr, 18/01/1999, Construction, Head, 987654321, FullTime, 5000
A2345678, Bmen, Mr, 23/04/1994, Office, Worker, 987654321, FullTime, 3000
A3456789, Cwomen, Mrs, 13/01/1996, Aviation, Pilot, 987654321, FullTime, 4000
A4567890, Dmen, Mr, 18/01/2002, Construction, Assistant Head, 987654321, FullTime, 4500
A5678901, Ewomen, Ms, 18/01/1991, Construction, Worker, 987654321, FullTime, 2500

需求:筛选出1995年之后出生的员工,将其薪资(最后一列)扣减10%;1995年及之前出生的员工薪资保持不变。

现有代码存在日期比较错误,代码片段如下:

with open('list.txt') as file:
    for line in file:
        split = line.split(",")
        
        if split[3] < 1/1/1995:
          

期望输出结果:

A1234567, Amen, Mr, 18/01/1999, Construction, Head, 987654321, FullTime, 4500
A2345678, Bmen, Mr, 23/04/1994, Office, Worker, 987654321, FullTime, 3000
A3456789, Cwomen, Mrs, 13/01/1996, Aviation, Pilot, 987654321, FullTime, 3600
A4567890, Dmen, Mr, 18/01/2002, Construction, Assistant Head, 987654321, FullTime, 4050
A5678901, Ewomen, Ms, 18/01/1991, Construction, Worker, 987654321, FullTime, 2500
修正后的代码与说明

核心错误是直接用字符串和数值做日期比较,必须先把日期字符串转换成可比较的日期对象。以下是完整实现代码:

from datetime import datetime

# 定义基准日期:1995年1月1日
cutoff_date = datetime(1995, 1, 1)

with open('list.txt', 'r') as infile, open('output.txt', 'w') as outfile:
    for line in infile:
        # 去除换行符并分割字段,同时处理可能的前后空格
        fields = [field.strip() for field in line.strip().split(',')]
        # 提取日期字符串并转换为datetime对象
        birth_date_str = fields[3]
        birth_date = datetime.strptime(birth_date_str, '%d/%m/%Y')
        
        # 判断是否是1995年之后出生的员工
        if birth_date > cutoff_date:
            # 薪资扣减10%,转换为整数
            salary = int(fields[-1])
            new_salary = int(salary * 0.9)
            fields[-1] = str(new_salary)
        
        # 将处理后的字段拼接成一行,写入输出文件
        output_line = ', '.join(fields)
        outfile.write(output_line + '\n')

关键说明:

  • 日期处理:使用datetime.strptime将dd/mm/YYYY格式的字符串转为datetime对象,才能和基准日期cutoff_date做正确的比较。
  • 薪资计算:将最后一列的薪资字符串转为整数,扣减10%后再转回字符串,确保格式一致。
  • 文件操作:同时打开输入文件和输出文件,处理一行写入一行,避免占用过多内存。
  • 字段清洗:用strip()处理每个字段的前后空格,避免因数据格式不规范导致的错误。

内容的提问来源于stack exchange,提问作者user19223797

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:45:47