Проблема парсинга даты при интеграции с 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()
Хотя это не полностью протестировано, это должно быть шаблонным описанием того, как получить дату из сообщения. Не забудьте удалить \
из формата даты, так как она не включается в сообщение.