当输入句子包含文章时,dateutil 模糊解析中断 'a'
dateutil fuzzy parsing breaks when the input sentence contains the article 'a'
我正在寻找一种从字符串中提取日期信息的方法。在阅读了另一个 SO 线程 (Extracting date from a string in Python) 后,似乎 python-dateutil 是一个理想的解决方案。它有一个模糊解析方法,能够从任何字符串中提取日期信息:
具体方法是
dateutil.parser.parse('your string here', fuzzy=True)
这适用于许多类型的包含日期的输入字符串,但我注意到当输入字符串包含确定符 'a' 时,此方法完全失效,如
之类的句子
dateutil.parser.parse('a monkey on March 1, 2015', fuzzy=True)
dateutil.parser.parse("I ate a sandwich on March 1",fuzzy=True)
这都会导致错误:
ValueError: Unknown string format
有人知道好的解决方法吗?为什么 dateutil.parser 在输入包含文章 "a" 时中断?
不确定这是否是一个好的解决方法,但是使用 python-dateutil
< 2.4:
没有错误
>>> from dateutil.parser import parse
>>> parse('a monkey on March 1, 2015', fuzzy=True)
datetime.datetime(2015, 3, 1, 0, 0)
>>> parse("I ate a sandwich on March 1",fuzzy=True)
datetime.datetime(2015, 3, 1, 0, 0)
>>> dateutil.__version__
'2.3'
仅供参考,这是我使用 2.4
(当前最新)得到的结果:
>>> from dateutil.parser import parse
>>> parse('a monkey on March 1, 2015', fuzzy=True)
Traceback (most recent call last):
...
raise ValueError("Unknown string format")
ValueError: Unknown string format
考虑通过在 dateutil bug tracker 中创建一个新问题来报告问题。
看起来 2.4 中的问题是由于在 "a" 匹配 AM 而没有对应的小时时触发了 ValueError。
在 2.3 及以下版本中,不会触发此类异常。
我正在寻找一种从字符串中提取日期信息的方法。在阅读了另一个 SO 线程 (Extracting date from a string in Python) 后,似乎 python-dateutil 是一个理想的解决方案。它有一个模糊解析方法,能够从任何字符串中提取日期信息:
具体方法是
dateutil.parser.parse('your string here', fuzzy=True)
这适用于许多类型的包含日期的输入字符串,但我注意到当输入字符串包含确定符 'a' 时,此方法完全失效,如
之类的句子dateutil.parser.parse('a monkey on March 1, 2015', fuzzy=True)
dateutil.parser.parse("I ate a sandwich on March 1",fuzzy=True)
这都会导致错误:
ValueError: Unknown string format
有人知道好的解决方法吗?为什么 dateutil.parser 在输入包含文章 "a" 时中断?
不确定这是否是一个好的解决方法,但是使用 python-dateutil
< 2.4:
>>> from dateutil.parser import parse
>>> parse('a monkey on March 1, 2015', fuzzy=True)
datetime.datetime(2015, 3, 1, 0, 0)
>>> parse("I ate a sandwich on March 1",fuzzy=True)
datetime.datetime(2015, 3, 1, 0, 0)
>>> dateutil.__version__
'2.3'
仅供参考,这是我使用 2.4
(当前最新)得到的结果:
>>> from dateutil.parser import parse
>>> parse('a monkey on March 1, 2015', fuzzy=True)
Traceback (most recent call last):
...
raise ValueError("Unknown string format")
ValueError: Unknown string format
考虑通过在 dateutil bug tracker 中创建一个新问题来报告问题。
看起来 2.4 中的问题是由于在 "a" 匹配 AM 而没有对应的小时时触发了 ValueError。
在 2.3 及以下版本中,不会触发此类异常。