Как разобрать, например, 2010-04-24T07: 47: 00.007 + 02: 00 с Strptime Python

StackOverflow https://stackoverflow.com/questions/3946689

  •  08-10-2019
  •  | 
  •  

Вопрос

Кто-нибудь знает, как разбирать формат, как описано в заголовке, используя метод STRPTIME Pythons?

У меня есть что-то похожее на это:

import datetime    
date = datetime.datetime.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.Z')

Я не могу понять, какой это время от времени. Кстати, я новичок на языке Python (я привык к C #).

ОБНОВИТЬ

Вот как я изменил код на основе консультаций (ответов) ниже:

from dateutil.parser import *
from datetime import *
date = parse(entry.published.text)
Это было полезно?

Решение

Эта дата в ISO 8601 или более конкретно RFC 3339., формат.

Такие даты не могут быть проанализированы с strptime. Отказ Это Выпуск Python это обсуждает это.

dateutil.parser.parse Может справиться с широким разнообразием дат, в том числе в своем примере.

Если вы используете внешний модуль для анализа XML или RSS, возможно, там, вероятно, в том, чтобы разбирать эту дату.

Другие советы

Вот хороший способ найти ответ: использование strftime, Создайте строку формата, которая выделяет то, что вы видите. Эта строка будет по определению, быть строкой, необходимой для анализа времени с strptime.

Если вы пытаетесь проанализировать RSS или ATOM, то используйте Универсальный подающий парсер. Отказ Он поддерживает Многие форматы даты / времени.

>>> import feedparser                 # parse feed
>>> d = feedparser.parse("http://stackoverflow.com/feeds/question/3946689")
>>> t = d.entries[0].published_parsed # get date of the first entry as a time tuple
>>> import datetime
>>> datetime.datetime(*t[:6])         # convert time tuple to datetime object
datetime.datetime(2010, 10, 15, 22, 46, 56)

Это стандартный формат данных XML DateTime, ISO 8601. Если вы уже используете библиотеку XML, большинство из них имеют встроенные анализаторы DateTime Parsers. xml.utils.iso8601 Работает достаточно хорошо.

import xml.utils.iso8601
date = xml.utils.iso8601.parse(entry.published.text)

Вы можете посмотреть на кучу других способов иметь дело с этим здесь:http://wiki.python.org/moin/workingwithtime.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top