使用strptime将字符串转换为datetime对象的问题

时间:2019-01-14 17:08:39

标签: python-3.x datetime

我正在尝试使用具有matplotlib的x轴的datetime对象绘制图形。问题是我收到格式错误 当我尝试将日期(从带有genfromtxt的.txt文件中提取)从字符串转换为datetime对象时。 我不明白为什么这种格式不适合我的数据。

import numpy as np
import matplotlib
import matplotlib.dates as md
import matplotlib.pyplot as plt
import scipy.stats
import datetime
from datetime import datetime
import time

Vent_date = np.genfromtxt(path,dtype=None,skip_header=9,usecols=0,delimiter=",")

dates = []
for line in Vent_date:
    line1 = line.decode('utf-8') # As genfromtext doesn't give utf-8 wich is needed for strptime
    dates.append(datetime.strptime(line1,"%Y-%m-%d %H:%M:%S"))

我得到:

ValueError: time data '"2018-06-28 15:00:00"' does not match format '%Y-%m-%d %H:%M:%S'

2018-06-28 15:00:00是Vent_date的第一个数据

1 个答案:

答案 0 :(得分:0)

如果您注意到该错误包含用单引号引起来的双引号。因此,看起来您的源数据中带有双引号,这就是为什么它失败了。

一些简单的解决方案:

  1. 修复(删除)源数据中的引号并使用原始代码
  2. 在尝试解析字符串之前,先将字符串中的引号去除:

    dates.append(datetime.strptime(line1.strip('"'),"%Y-%m-%d %H:%M:%S"))
    
  3. 更改日期格式字符串以查找包含双引号的日期:

    dates.append(datetime.strptime(line1,'"%Y-%m-%d %H:%M:%S"'))
    
  4. 使用Python的csv库可以更好地读取csv文件