Проблема в разборе даты с использованием dateutil
Я использую python-dateutil для анализа даты из строки:
import dateutil.parser
print dateutil.parser.parse('some null string', fuzzy=True).date()
2012-10-18
print dateutil.parser.parse('some 31 Oct 2012 string', fuzzy=True).date()
2012-10-31
То, что я ожидаю, для dateutil.parser.parse('some null string', fuzzy=True).date()
бросить исключение, но он возвращает текущую дату. Может кто-нибудь показать мне, как я могу избежать получения текущей даты, если в указанной строке не найдено ни одной даты?
Заранее спасибо.
1 ответ
Смотрите документацию по dateutil, в частности, функцию parse (подчеркивает мою):
Кроме того, доступны следующие ключевые аргументы:
default Если задано, это должен быть экземпляр datetime. Любые поля, отсутствующие в проанализированной дате, будут скопированы из этого экземпляра. Значением по умолчанию является текущая дата в 00:00:00.
... (отрывок)...
fuzzy Если для fuzzy установлено значение True, неизвестные токены в строке будут игнорироваться.
Учитывая, что вы установили fuzzy
в True
исключение не будет выдано, поскольку оно будет просто игнорировать все неизвестные токены. И, как default
аргумент не передан, текущая дата будет возвращена.
Таким образом, решение будет либо сохранить fuzzy
установлен в False
, так что недопустимые строки формата вызовут исключение; или проверьте, совпадает ли возвращаемое время и дата с текущей датой в 00:00:00 в качестве признака неудачного преобразования.