【问题标题】:ValueError: time data 'LEGACY SYSTEM' does not match format '%H:%M:%S'ValueError:时间数据 'LEGACY SYSTEM' 与格式 '%H:%M:%S' 不匹配
【发布时间】:2019-05-09 16:07:06
【问题描述】:

我看到这是一个受欢迎的问题,所以希望有人可以帮助我。然而,我被难住了。我的 CSV 文件在第一列中包含时间戳,例如

18:49:45
19:50:31
20:51:26

我的代码如下。我想我使用了正确的 24 小时、分钟和秒格式。

  import csv
  import time

  with open('file.csv', 'rb')as csvfile:
      filereader = csv.reader(csvfile, delimiter=',')
      for row in filereader:
          date = row[0]
          parsed = datetime.datetime.strptime(date, '%H:%M:%S')

错误:ValueError:时间数据“LEGACY SYSTEM”与格式“%H:%M:%S”不匹配

【问题讨论】:

  • 你的 csv 文件是否有标题行?
  • @buran 是的,它确实如此,所以我需要跳过那些?
  • 是的,您需要跳过标题行。或使用 csv.DictReader

标签: python csv python-2.6 valueerror


【解决方案1】:

您有一个标题行。您可以使用 next 从您的 csv.reader 迭代器中检索(然后丢弃)第一行:

from datetime import datetime
import csv
from io import StringIO

file = StringIO("""LEGACY SYSTEM
18:49:45
19:50:31
20:51:26""")

# replace file with open('file.csv', 'rb')
with file as csvfile:
    filereader = csv.reader(csvfile, delimiter=',')
    next(filereader)
    for row in filereader:
        parsed = datetime.strptime(row[0], '%H:%M:%S')
        print(parsed)

# 1900-01-01 18:49:45
# 1900-01-01 19:50:31
# 1900-01-01 20:51:26

如果您有多个(例如两个)标题行,您可以使用 for 循环来忽略它们:

for _ in range(2):
    next(filereader)

【讨论】:

  • 这基本上就是我死的。但是,我有 2 个标题行。有没有办法将 next 用于多行?
猜你喜欢
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 2017-06-04
  • 1970-01-01
  • 2019-01-01
  • 2022-12-06
相关资源
最近更新 更多