Python自动生日祝福项目:如何匹配CSV列值获取前两列数据
实现方案
直接用Pandas的条件筛选语法匹配对应日期的行,无需手动提取月份、日期列表遍历,代码更简洁高效。
前置处理注意
你的CSV表头字段后带多余空格,读取时加skipinitialspace=True参数自动清除字段前后空格,避免后续调用列名时报错。
完整实现代码
import pandas as pd import datetime # 1. 读取生日文件,自动清除字段空格 birthday_df = pd.read_csv("birthdays.csv", skipinitialspace=True) # 2. 获取当前月、日(你已有校验逻辑可直接用自己的变量替换) today = datetime.datetime.now() current_month = today.month current_day = today.day # 3. 筛选月、日匹配的所有行 matched_birthdays = birthday_df[(birthday_df["month"] == current_month) & (birthday_df["day"] == current_day)] # 4. 遍历匹配结果,取出姓名、邮箱传给发邮件函数 for _, row in matched_birthdays.iterrows(): # 第一列是name,第二列是email recipient_name = row["name"] recipient_email = row["email"] # 在这里调用你的发邮件函数即可,示例:send_birthday_email(recipient_name, recipient_email)
可选简化写法
如果只需要提取姓名和邮箱两列,可以在筛选后直接转成元组列表调用:
# 直接生成(姓名, 邮箱)的元组列表 matched_contacts = matched_birthdays[["name", "email"]].values.tolist() for name, email in matched_contacts: # 调用发邮件逻辑 pass
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

