Проблемы при преобразовании строки в объект datetime с помощью strptime - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь построить график, используя объект datetime, имеющий ось x с matplotlib. Проблема в том, что я получаю ошибку формата когда я пытаюсь преобразовать даты (извлеченные из файла .txt с genfromtxt) из строки в объект 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 голосов
/ 14 января 2019

Если вы заметили, что ошибка содержит двойные кавычки, заключенные в одинарные кавычки. Похоже, ваши исходные данные содержат двойные кавычки, поэтому они терпят неудачу.

Несколько простых решений:

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...