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

Python读取CSV已知列名时如何拆分单元格值并按日期筛选行

问题排查

你现有代码存在3个核心问题导致结果不符合预期:

  • 语法错误:Date_val=Date_val..append(row['Date'])多写了一个点,且列表append()方法是原地操作、返回值为None,将其返回值重新赋值给列表会导致变量异常。
  • 读取配置错误:使用DictReader时未导入csv模块,也没有配置quotechar参数适配你CSV中用单引号包裹字段的格式,解析器无法正确识别字段边界,也不会自动处理单元格内的逗号分隔多值。
  • 逻辑缺失:没有编写日期匹配判断逻辑,也没有对Date列的多值做拆分比对,自然无法筛选出符合要求的行数据。
实现代码

直接替换成如下代码即可,注意把文件路径改成你实际的存储路径:

import csv
from datetime import datetime

# 替换为你的CSV文件实际路径
FILE_PATH = "your_file.csv"
# 取当日日期的「日」字段,和CSV内存储的日期格式对齐
target_date = str(datetime.today().day)

category_res = []
ability_res = []

with open(FILE_PATH, "r", newline="", encoding="utf-8") as f:
    # 配置单引号为字段包裹符,正确解析含内部逗号的单元格
    reader = csv.DictReader(f, quotechar="'")
    for row in reader:
        # 拆分当前行Date列的多日期值,去除前后空白
        date_items = [item.strip() for item in row["Date"].split(",")]
        if target_date in date_items:
            category_res.append(row["Category"].strip())
            # 如果需要Ability保留整串值,直接append即可;如果要拆成单个值扁平化存储,替换为下一行的extend逻辑
            ability_res.append(row["Ability"].strip())
            # ability_res.extend([a.strip() for a in row["Ability"].split(",")])

print("Category_Exp:", category_res)
print("Ability:", ability_res)
效果验证

用你提供的测试CSV,将target_date设为'21'时:

  • 采用append逻辑收集Ability,输出为['Air,land', 'water,land']
  • 采用extend逻辑拆分收集Ability,输出为['Air','land','water','land']
  • Category输出固定为['Sparrow', 'Penguin'],完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:06:21