Строку в дату
От: nen777w  
Дата: 01.11.18 14:44
Оценка:
  "Есть вот такой замечательный набор строк:"
?? ??? 17 19:19:52 2018 GMT
Do Okt 18 07:00:12 2018 GMT
Thu Oct 18 23:18:41 2018 GMT
? 10 19 03:47:02 2018 GMT
? 10? 23 04:27:48 2018 GMT
lun. oct. 29 22:58:27 2018 GMT
????? ?????? 6 09:45:29 2018 GMT
sáb jul 14 00:34:52 2018 GMT


и т.д. и т.п.
Т.е. в целом понятно что это записи дат. Вот только достаточно сильно "разноформатные" да и местами еще и подпорченные знаками '?'.
Есть ли способ преобразовать их в нормальные даты, не особо напрягаясь с разбором всех возможных вариантов и написания regexp-ов для их парсинга?

з.ы.
Задача конечно еще та. Но прежде чем приступить к решению в лоб, возможно есть решения по проще или хотя бы упрощающие задачу.
Re: Строку в дату
От: kov_serg Россия  
Дата: 01.11.18 16:00
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Есть ли способ преобразовать их в нормальные даты, не особо напрягаясь с разбором всех возможных вариантов и написания regexp-ов для их парсинга?

Чем вам не нравиться способ со списком разных regexp-ов?
Делаете выборку и покрваете все имеющиеся варианты.

N>з.ы.

N>Задача конечно еще та. Но прежде чем приступить к решению в лоб, возможно есть решения по проще или хотя бы упрощающие задачу.
?? ??? 17 19:19:52 2018 GMT
????? ?????? 6 09:45:29 2018 GMT
тут придётся угадывать и возвращать список возможных вариантов.
А каково происхождение ??? неудачные преобразования кодировок?
Re[2]: Строку в дату
От: nen777w  
Дата: 01.11.18 19:51
Оценка:
N>>Есть ли способ преобразовать их в нормальные даты, не особо напрягаясь с разбором всех возможных вариантов и написания regexp-ов для их парсинга?
_>Чем вам не нравиться способ со списком разных regexp-ов?
_>Делаете выборку и покрваете все имеющиеся варианты.

Ну это и есть решение в лоб, возни много будет.

N>>з.ы.

N>>Задача конечно еще та. Но прежде чем приступить к решению в лоб, возможно есть решения по проще или хотя бы упрощающие задачу.
_>
_>?? ??? 17 19:19:52 2018 GMT
_>????? ?????? 6 09:45:29 2018 GMT
_>
тут придётся угадывать и возвращать список возможных вариантов.


Да, тут надо будет просто сделать что то вроде возможной даты по умолчанию.

_>А каково происхождение ??? неудачные преобразования кодировок?


Вероятнее вего что да.
Re[3]: Строку в дату
От: kov_serg Россия  
Дата: 01.11.18 20:18
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Ну это и есть решение в лоб, возни много будет.

Это только так кажеться. Наните и черз пол часа уже останется десяток не проходящих тесты дат.

N>Да, тут надо будет просто сделать что то вроде возможной даты по умолчанию.

Лучше выдавть список или диапазон. Или признак насколько вероятен неверный результат. А еще луше теже знаки вопроса

_>>А каково происхождение ??? неудачные преобразования кодировок?

N>Вероятнее вего что да.
И что нельзя потребовать вменяемых данных? Или это анализ останков?
Re: Строку в дату
От: BrainSlug Израиль  
Дата: 01.11.18 20:32
Оценка: 4 (1)
N>
  "Есть вот такой замечательный набор строк:"
N>?? ??? 17 19:19:52 2018 GMT
N>Do Okt 18 07:00:12 2018 GMT
N>Thu Oct 18 23:18:41 2018 GMT
N>? 10 19 03:47:02 2018 GMT
N>? 10? 23 04:27:48 2018 GMT
N>lun. oct. 29 22:58:27 2018 GMT
N>????? ?????? 6 09:45:29 2018 GMT
N>sáb jul 14 00:34:52 2018 GMT

трушный путь, это самом написать. тем более здесь, прослеживается все же один паттерн, формат строк. (ну т.е. понятно где день, часы и прочее)
ленивый путь взять готовую питон библиотеку https://github.com/scrapinghub/dateparser проверил она эти строки из коробки парсит
.
Re: Строку в дату
От: Кодт Россия  
Дата: 07.11.18 10:18
Оценка: -1
Здравствуйте, nen777w, Вы писали:

N>Т.е. в целом понятно что это записи дат. Вот только достаточно сильно "разноформатные" да и местами еще и подпорченные знаками '?'.

N>Есть ли способ преобразовать их в нормальные даты, не особо напрягаясь с разбором всех возможных вариантов и написания regexp-ов для их парсинга?

N>Задача конечно еще та. Но прежде чем приступить к решению в лоб, возможно есть решения по проще или хотя бы упрощающие задачу.


0. разбить на токены
1. нормализовать всё (привести в нижний регистр)
2. сделать замены известных слов на известных языках в один язык
3. сделать ленивые множества значений, соответствущих каждому токену (генераторы в питоне, перебор в прологе, комбинаторные парсеры в хаскелле и т.п.)
4. сделать ленивое декартово произведение — множество кортежей значений
5. отфильтровать по допустимости (скажем, "??? 31 2018" явно не может быть ни февралём, ни апрелем, а "wed nov ? 2018" — понятно, что 7 число)
— не забыть про високосные года и високосные секунды
6. а уж что делать с этим ленивым множеством кортежей — тут хз.
http://files.rsdn.org/4783/catsmiley.gif Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.