Проблема парсинга даты при интеграции с Oracle PMS

Я получаю дату в сообщении PMS примерно так |GA090616|GD090617| что означает, что Гость прибыл в 09-06-16 и Гость выбыл в 09-06-17

Я хотел разобрать его как дату, используя python.

Я также посетил stack oveflow[1, 2 ...] для этого, но в качестве решения я нашел

from datetime import datetime

self.DATE_FROMAT='%d/%m/%y'

arrival_date=datetime.strptime('90616', self.DATE_FROMAT).date()
print(arrival_date)

и не возможно разобрать его в таком виде из-за того, что он не имеет четкого формата. Не удается выяснить 09 это месяц или дата, насколько я понял из документов и pdf, это месяц.

Есть ли лучшее решение для такого парсинга даты? Или предложение для моих ожиданий.

{
   guest_arrival: 09-06-16,
   guest_deprature: 09-06-17
}

Вы можете сделать это с помощью regex-сопоставления, вы можете разделить строку с помощью msg.split("|") или нет, но это зависит от вашего случая использования.

import re
from datetime import datetime

msg = "GA090616|GD090617|"
DATE_FORMAT='%d%m%y'

ar = re.match("GA(\d{6})", msg)
dp = re.match("GD(\d{6})", msg)

guest_arrival = datetime.strptime(ar.group(1), DATE_FORMAT).date()
guest_departure = datetime.strptime(dp.group(1), DATE_FORMAT).date()

Хотя это не полностью протестировано, это должно быть шаблонным описанием того, как получить дату из сообщения. Не забудьте удалить \ из формата даты, так как она не включается в сообщение.

Вернуться на верх