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

如何解析CSV文件,统计含指定关键词邮件的发件人日期频次并生成报告?

用Python实现CSV文件的自动回复邮件统计与汇总

实现步骤

  1. 导入依赖库:用csv模块读取CSV文件,defaultdict实现数据分组存储,datetime处理日期排序逻辑。
  2. 读取并过滤数据:遍历CSV每一行,筛选出message_subject包含<em>Auto Reply:</em>的记录。
  3. 分组统计与日期排序:按Sender_Address分组,统计每组的记录频次,同时对每组的日期做升序排序。
  4. 输出指定格式的汇总报告:按照要求的列格式打印最终统计结果。

完整代码

import csv
from collections import defaultdict
from datetime import datetime

# 初始化存储结构:键为发件人邮箱,值为对应日期列表
sender_data = defaultdict(list)

# 读取目标CSV文件(替换为你的文件路径,示例中假设文件名为data.csv)
with open('data.csv', 'r', encoding='utf-8') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        # 筛选主题包含指定关键词的记录
        if '<em>Auto Reply:</em>' in row['message_subject']:
            sender = row['Sender_Address']
            date_str = row['Date']  # 需与CSV实际日期列名一致,若不同请修改此处键名
            sender_data[sender].append(date_str)

# 处理数据:统计频次、对日期升序排序
processed_data = []
for sender, dates in sender_data.items():
    sorted_dates = sorted(dates, key=lambda d: datetime.strptime(d, '%Y-%m-%d'))
    processed_data.append({
        'sender': sender,
        'frequency': len(sorted_dates),
        'sorted_dates': sorted_dates
    })

# 打印表头
print(f"{'Sender_Address':<20} {'Frequency':<12} Date (Ascending sorted)")
# 打印每条统计记录
for item in processed_data:
    dates_str = ', '.join(item['sorted_dates'])
    print(f"{item['sender']:<20} {item['frequency']:<12} {dates_str}")

注意事项

  • 确认CSV文件中的日期列名为Date,若实际列名不同,需修改代码中row['Date']的键名。
  • 若CSV文件使用非utf-8编码(如gbk),需调整open函数的encoding参数。
  • 代码中的文件名data.csv需替换为你实际的CSV文件路径。

内容的提问来源于stack exchange,提问作者Senior Systems Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:40:36