Парсинг дат в виде строк с использованием стрелок даты манипулирования библиотекой 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