2013-03-10 1 views
1

Использование библиотеки parsedatetime от Bear on Python 2.7 по Ubuntu 12.04. При передаче в строке, содержащей символы, но не действительная дата (или время), иногда функция parse() возвращает действительную дату/время.Убедитесь, что parsedatetime не анализирует неверную строку даты/времени

После подачи вопроса 48, похоже, что parsedatetime действительно не хочет строку, в которой нет даты/времени.

Итак, мысли на предварительном процессоре, чтобы определить логическое значение, соответствует ли строка правильной дате?

ссылки ссылки: https://github.com/bear/parsedatetime/ https://code.google.com/p/parsedatetime/issues/detail?id=48

Примечание: в выпуске 48 Я взываю parseDateText() неправомерно. Я подтвердил, что существует такая же операция с parse().

Любая помощь очень ценится.

Редактировать: Пример кода.

Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import parsedatetime as pdt 
>>> c = pdt.Constants() 
>>> c.BirthdayEpoc = 80 
>>> p = pdt.Calendar(c) 
>>> print p.parse("Mary had a little lamb.") 
((2014, 3, 1, 20, 53, 56, 6, 69, 1), 1) 
>>> print p.parse("foo bar") 
(time.struct_time(tm_year=2013, tm_mon=3, tm_mday=10, tm_hour=20, tm_min=54, tm_sec=6, tm_wday=6, tm_yday=69, tm_isdst=1), 0) 
>>> print p.parse("March 12th, 2013") 
((2013, 3, 12, 20, 54, 34, 6, 69, 1), 1) 
>>> 
+3

Предоставьте полный минимальный пример, демонстрирующий проблему. Вероятно, вы захотите записать еще одну проблему, которая использует метод 'parse()'. – jfs

+0

Хорошо, я сделаю это. Благодарю. – user2154772

ответ

1

Как указано в J.F., надлежащим вызовом для использования является метод parse(). Метод parse также имеет значение для возврата кортежа, который содержит два элемента: один определяет значение даты/времени, а другое - это флаг, показывающий, было ли найдено какое-либо значение даты/времени ...

пробой возвращаемого значения флага:

  • 0 = не проанализирован на всех
  • 1 = проанализированного как дата
  • 2 = разобранного как время
  • 3 = разобранного как DateTime

Если вы получили что-либо кроме 0 из своих тестов, вы обнаружили ошибку:/

Смежные вопросы