如何从含无关文本的字符串中提取至少含日和月的日期,避免将单独整数解析为当月日期
如何从含无关文本的字符串中提取至少含日和月的日期,避免将单独整数解析为当月日期
我想要实现的目标:
- 提取的日期至少包含日和月,也可以附带时、分、年信息
- 绝对不能让解析器把单独的整数当成当月的某一天来处理
- 还要能从一大段字符串里精准找出符合要求的日期片段
举几个例子更清楚:
- 输入'Today is the most wonderful 27th of March 2025',应该得到
datetime.datetime(2025, 3, 27, 0, 0)- 输入'2gb of ram',不能返回
datetime.datetime(2025, 3, 2, 0, 0)(假设当前是3月)
我已经尝试过的方法
用dateutil的fuzzy=True参数
from dateutil import parser # 这个情况没问题:正确返回 datetime.datetime(2025, 3, 30, 0, 0) parser.parse('Today is the most wonderful 30th March 2025', fuzzy=True) # 这个就不行了:单独的整数没被忽略,返回了 datetime.datetime(2025, 3, 2, 0, 0) parser.parse('2 is my lucky number', fuzzy=True)
问题:没法过滤单独的整数,会误判成当月日期。
用dateparser的REQUIRED_PARTS设置
from dateparser import parse # 正常:返回正确的 datetime.datetime(2025, 3, 30, 0, 0) parse('30 March', settings={'REQUIRE_PARTS': ['month', 'day']}) # 正常:单独整数被忽略,没有返回日期 parse('30', settings={'REQUIRE_PARTS': ['month', 'day']}) # 异常:本该识别出日期,但没找到结果 parse('Today is the most wonderful 30th of March', settings={'REQUIRE_PARTS': ['month', 'day']})
问题:没办法从夹杂无关文本的长字符串里提取日期。
我本来想把dateutil的模糊提取能力和dateparser的强制日期组件要求结合起来,但这俩是独立模块,没法直接混用。有没有其他办法能实现我想要的功能呢?
备注:内容来源于stack exchange,提问作者Jeremy Smith
相关产品推荐
相关产品推荐

