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

Python中strftime传Series报错:无法将MeetingDate转为df指定日期格式

解决strftime()参数为Series导致的TypeError问题

你碰到的这个错误很典型——strftime()方法只接受单个字符串格式,但你传入的df['dateformat']是整个pandas列(Series类型),自然会触发类型不匹配的报错。而且你的循环逻辑有问题:单独遍历urls的话,根本没法对应到每一行对应的日期格式,肯定会出问题。

修正思路

核心是要遍历DataFrame的每一行,这样才能同时获取当前url对应的日期格式、xpath等信息,确保传给strftime()的是单个字符串:

  • 用df.iterrows()代替单独遍历urls,这样能拿到每一行的所有字段
  • 从当前行中提取单个日期格式字符串,再调用strftime()
  • 用格式化后的日期替换当前行xpath里的占位符*

修正后的完整代码

import datetime
import pandas as pd
from selenium import webdriver

MeetingDate = datetime.datetime(2020,5,11)
df = pd.read_csv('request.csv')

# 遍历DataFrame的每一行,同时获取当前行的所有数据
for idx, row in df.iterrows():
    url = row['url']
    # 取出当前行的单个日期格式字符串(不再是整个Series)
    date_format = row['dateformat']
    xpath_template = row['WebCfg_MtgDate_xpath']
    fcid = row['fcid']
    
    driver.get(url)
    # 现在传入的是单个字符串,符合strftime的要求
    agendaMeetingdateformat = MeetingDate.strftime(date_format)
    # 替换当前行xpath模板里的*
    target_xpath = xpath_template.replace('*', agendaMeetingdateformat)
    
    try:
        # 定位元素并获取文本
        my_element_text = driver.find_element_by_xpath(target_xpath).text
        if my_element_text == agendaMeetingdateformat:
            print(f'fcid {fcid}: 会议日期验证通过')
        else:
            print(f'fcid {fcid}: 会议日期无效 - 实际值: {my_element_text}')
    except Exception as e:
        # 处理元素定位失败的情况,避免程序崩溃
        print(f'fcid {fcid}: 元素定位失败 - 错误信息: {str(e)}')

driver.close()

关键修改点说明

  • 遍历方式优化:iterrows()能让你同时拿到行索引和整行数据,确保每个url都对应正确的日期格式和xpath
  • 类型问题解决:row['dateformat']是单个字符串,完美匹配strftime()的参数要求
  • 健壮性提升:添加try-except块捕获元素定位异常,避免一个url出错导致整个程序终止
  • 可读性优化:打印时带上fcid和实际错误信息,方便你快速定位问题所在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:37:28