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

Python中CSV时间转datetime对象遇ValueError问题求助

问题原因

你的CSV文件第一行是表头(内容为Operation Date),但代码直接遍历所有行,第一次循环时row[0]拿到的是表头文本,不是符合ISO 8601格式的时间字符串,因此datetime.strptime解析失败,抛出ValueError。

解决方法

1. 跳过表头行

在循环前调用next(reader)跳过第一行表头,修正后的代码:

import datetime
import csv

with open('ledger.csv', 'r') as csv_file:
    reader = csv.reader(csv_file)
    next(reader)  # 跳过表头行
    for row in reader:
        # 解析时间字符串
        dt = datetime.strptime(row[0], "%Y-%m-%dT%H:%M:%S.%fZ")
        print(dt)
# with语句会自动关闭文件,无需手动调用csv_file.close()

2. 更简洁的ISO 8601解析方式

Python 3.7+支持datetime.fromisoformat,可以更简洁处理ISO格式,只需把末尾的Z替换为+00:00(代表UTC时区):

import datetime
import csv

with open('ledger.csv', 'r') as csv_file:
    reader = csv.reader(csv_file)
    next(reader)
    for row in reader:
        time_str = row[0].replace('Z', '+00:00')
        dt = datetime.datetime.fromisoformat(time_str)
        print(dt)
补充说明
  • 你提供的CSV示例未显示表头,但错误信息明确证明文件存在Operation Date这一行,这是CSV文件常见的结构(第一行定义列名)。
  • with语句会自动管理文件资源,代码块执行完毕后会自动关闭文件,无需手动调用close()方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:42:49