Разделить и отформатировать диапазон дат - PullRequest
0 голосов
/ 11 февраля 2020

Я работаю над анализом диапазона дат из электронного письма в zapier. Вот что приходит: De c 4 - 4 января 2020 г. От этого мне нужно разделить дату начала и окончания на что-то вроде 12/04/2019 и 01/04/2020 с учетом того факта, что некоторые даты начнутся в предыдущем году, как в примере выше, и некоторые будут в том же году, например 4 марта - 22 марта 2020 года. Кажется, код для использования в zapier - python. Я смотрел на примеры для панды

    import pandas as pd
    date_series = pd.date_range(start='Mar 4' -, end='Mar 7, 2020')
    print(date)

Но продолжаю получать ошибки. Любые предложения будут высоко оценены спасибо

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Это один из способов сделать это:

def parse_email_range(date_string):
    dates = date_string.split(' - ')

    month_1 = pd.to_datetime(dates[0], format='%b %d').month
    month_2 = pd.to_datetime(dates[1]).month

    day_1 = pd.to_datetime(dates[0], format='%b %d').day
    day_2 = pd.to_datetime(dates[1]).day

    year_2 = pd.to_datetime(dates[1]).year
    year_1 = year_2 if (month_1 < month_2) or (month_1 == month_2 and day_1 < day_2) else year_2 - 1

    return '{}-{}-{}'.format(year_1, month_1, day_1), '{}-{}-{}'.format(year_2, month_2, day_2)

parse_email_range('Dec 4 - Jan 4, 2020')

## ('2019-12-4', '2020-1-4')
0 голосов
/ 11 февраля 2020

Разделите две даты и запишите их в одну переменную:

raw_dates = 'Dec 4 - Jan 4, 2020'.split(" - ")

dateutil Пакет способен анализировать большинство дат:

from dateutil.parser import parse

Разобрать и разделить начало и конец дата из необработанных дат:

start_date, end_date = (parse(date) for date in raw_dates)

strftime - это метод, который можно использовать для форматирования дат.

Сохранение требуемого формата в переменной (обратите внимание, что я использовал формат «день первый» ):

date_format = '%d/%m/%Y'

Преобразование даты окончания в желаемый формат:

print(end_date.strftime(date_format))

'04/01/2020'

Преобразование даты начала:

dateutil Функция relativedelta поможет нам вычесть один год из даты начала:

from dateutil.relativedelta import relativedelta

adjusted_start_date = start_date - relativedelta(years=1)

print(adjusted_start_date.strftime(date_format))

'04/12/2019'
...