#regex #openrefine
Вопрос:
У меня есть столбец значений с диапазоном дат, отформатированный как ДД Месяц ГГГГ, но я хочу, чтобы он читался как месяц ДД ГГГГ. Так, например, «14 октября 2021 года» должно быть «14 октября 2021 года» — есть ли простой способ сделать это в OpenRefine?
Спасибо!
Ответ №1:
Вы можете использовать функции даты в OpenRefine для анализа и форматирования дат.
В вашем случае это было бы:
value.toDate("dd MMMM yyyy").toString("MMMM dd yyyy")
Обратите внимание, что использование длинной формы месяцев зависит от контекста.
Это означает, что разбор названий английских месяцев на французском компьютере не сработает.
Ответ №2:
Из поиска в Google похоже, что существует библиотека python под названием Jython. Если вы установите его, вы можете попробовать.
result = re.sub('(d ).(w ).(d )', r'2 1 3', input)
14 октября 2021 года
d matches 14
w matches October
d matches 2021
() помещает их в группы, поэтому (d ) — это первая группа, а (w ) — вторая группа. Затем вы используете 2 1 3 для обозначения этих групп, по сути говоря: переместите группу 2, октябрь, в начало, группу 1, 14, в середину, а группа 3, 2021, останется там, где она есть.
Это работает в R, я на самом деле не использую python, но, похоже, вам нужно использовать r’ спереди, как указано выше, поэтому рассматривается как escape-символ.
Ответ №3:
Я бы разделил столбец на три, используя пробел в качестве разделителя:
- измените порядок столбцов в требуемом порядке, а затем снова соберите их с помощью join или
- создайте новый столбец с помощью:
cells['Month'].value cells['DD'].value cells['YYYY'].value