Парсинг дат в виде строк с использованием стрелок даты манипулирования библиотекой Python

Я ищу, чтобы преобразовать строку "september 20 2010" питону datetime.date использование объекта arrow,

Я написал функции для замены частей текста и закончил с 20.09.2016, но я хочу формат YYYY-MM-DD и не могу получить arrow распознать мою строку и преобразовать ее в питона datetime.date объект (без какого-либо времени).

Что сработало, а что нет.

arrow.get ("20 сентября 2010 года", "%B %d %Y")

это не работает для меня, я получаю сообщение об ошибке: ParserError: Failed to match '%B %(?P<d>[1-7]) %Y' при разборе строки "september 20 2010"

Однако, когда я манипулирую строкой, а затем использую arrow.Arrow(y,m,d).date(), результат datetime.date(2016, 9, 20) объект.

Я просто не могу конвертировать его в любой другой формат используя .format('dddd-DD-MMMM-YYYY') который вернется в понедельник 20 сентября 2010 года.

1 ответ

Решение

С помощью arrow, вы должны соответствовать точному синтаксису вашей строки, вот список связанных токенов.

arrow.get('September 20 2010', 'MMMM D YYYY')

Примечание: в этом случае есть только один D потому что он охватывает номер с одной или двумя цифрами 1, 2, 3... 29, 30 в то время как DD закрывать номер только двумя цифрами 01, 02, 03 ... 29, 30

Получив объект со стрелкой, вы можете отобразить его так, как вам нравится, с помощью format ():

ar = arrow.get('September 20 2010', 'MMMM D YYYY')
print(ar.format('YYYY-MM-DD')) # 2010-09-20

РЕДАКТИРОВАТЬ

Чтобы ответить на ваш комментарий, ar является объектом Arrow, и вы можете проверить каждый метод, содержащийся в нем dir

Arrow есть метод date() который возвращает datetime.date объект.

Теперь, если вы хотите использовать pandas, это легко:

import array
import pandas as pd

ar = arrow.get('September 20 2010', 'MMMM D YYYY')
df = pd.to_datetime(ar.date())
print(df) # 2010-09-20 00:00:00
Другие вопросы по тегам