Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Освоение Python strptime(): точное парсинг дат из строк

Метод strptime() в Python: преобразование строк в объекты datetime

Это руководство показывает, как создавать объекты datetime из строк с помощью метода datetime.strptime(), с практическими примерами и полным справочником кодов форматирования.

Видео: Работа с датами и временем в Python

Посмотрите официальное руководство Python для углубленного понимания работы с модулем datetime.

Метод strptime() создает объект datetime из строки, соответствующей указанному формату.

Важно: Не каждую строку можно распарсить; входная строка должна в точности соответствовать коду форматирования.


Пример 1: Преобразование простой строки даты

from datetime import datetime

date_string = "21 June, 2018"
print("date_string =", date_string)
print("Тип date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("Тип date_object =", type(date_object))

Результат выполнения:

date_string = 21 June, 2018
Тип date_string = <class 'str'>
date_object = 2018-06-21 00:00:00
Тип date_object = <class 'datetime.datetime'>

Как работает strptime()

Классовый метод strptime() принимает два аргумента:

На основе этих данных метод возвращает объект datetime, представляющий тот же момент времени.

В примере выше код форматирования %d %B, %Y означает:


Пример 2: Парсинг неоднозначных дат

from datetime import datetime

dt_string = "12/11/2018 09:15:32"
# Предполагаем формат день/месяц/год
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# Предполагаем формат месяц/день/год
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)

Программа выдает:

dt_object1 = 2018-11-12 09:15:32
dt_object2 = 2018-12-11 09:15:32

Полный список кодов форматирования для strptime()

Таблица ниже суммирует все директивы, которые можно использовать с strptime(). Для полной документации обратитесь к официальному руководству по модулю datetime в Python.

ДирективаЗначениеПример
%aСокращенное название дня неделиПн, Вт, ...
%AПолное название дня неделиПонедельник, Вторник, ...
%wДень недели как число (0=воскресенье)0, 1, ..., 6
%dДень месяца (с нулем)01, 02, ..., 31
%-dДень месяца (без нуля)1, 2, ..., 30
%bСокращенное название месяцаЯнв, Фев, ..., Дек
%BПолное название месяцаЯнварь, Февраль, ...
%mНомер месяца (с нулем)01, 02, ..., 12
%-mНомер месяца (без нуля)1, 2, ..., 12
%yГод без века (с нулем)00, 01, ..., 99
%-yГод без века (без нуля)0, 1, ..., 99
%YГод с веком2013, 2024, ...
%HЧас (24-ч, с нулем)00, 01, ..., 23
%-HЧас (24-ч, без нуля)0, 1, ..., 23
%IЧас (12-ч, с нулем)01, 02, ..., 12
%-IЧас (12-ч, без нуля)1, 2, ..., 12
%pAM/PM в соответствии с локальюAM, PM
%MМинуты (с нулем)00, 01, ..., 59
%-MМинуты (без нуля)0, 1, ..., 59
%SСекунды (с нулем)00, 01, ..., 59
%-SСекунды (без нуля)0, 1, ..., 59
%fМикросекунды (с нулями)000000 – 999999
%zСмещение UTC (+HHMM или –HHMM)+0300
%ZНазвание часового поясаMSK
%jДень года (с нулями)001, 002, ..., 366
%-jДень года (без нулей)1, 2, ..., 366
%UНомер недели (воскресенье первый)00, 01, ..., 53
%WНомер недели (понедельник первый)00, 01, ..., 53
%cДата и время локалиВт 12 июн 09:55:22 2018
%xДата локали06/12/18
%XВремя локали09:55:22
%%Буквальный знак процента%

Частая ошибка: ValueError

Если строка и код форматирования не совпадают, strptime() вызывает исключение ValueError. Например:

from datetime import datetime

date_string = "12/11/2018"  # Неверный формат — ожидается день месяц год
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)

Запуск этого кода вызывает:

ValueError: time data '12/11/2018' does not match format '%d %m %Y'

Рекомендуемое чтение: Python strftime()

Python

  1. Ключевые слова и идентификаторы в Python: мастерство зарезервированных слов и соглашений об именовании
  2. Освоение типов данных в Python: практическое руководство
  3. Мастерство операторов Python: Полное руководство
  4. Оператор pass в Python: практическое руководство
  5. Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
  6. Словари в Python: создание, манипуляции и продвинутые техники
  7. Итераторы в Python: как они работают и как создать свои
  8. Замыкания в Python: как вложенные функции захватывают переменные
  9. Регулярные выражения в Python (модуль re) — практическое руководство
  10. Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам