首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stanford的SUTime:无法捕获某些日期格式

Stanford的SUTime:无法捕获某些日期格式
EN

Stack Overflow用户
提问于 2018-10-06 01:42:43
回答 1查看 457关注 0票数 0

我正在使用斯坦福大学的python包装器‘s SUTime。到目前为止,将结果与其他日期解析器(如鸭子、日期解析器的search_dates、parsedatetime和natty )进行比较,SUTime提供了最可靠的结果。

然而,它未能从文档中捕捉到一些明显的日期。下面是我很难用SUTime解析日期的两种文档类型。

  1. 我出去了,我要到9/19才有空
  2. 我出去了,在9月18日至9月20日之间我就不能上班了。

对于第一份文件,它没有给出结果。但是,对于第二个文档,它只捕获月份,而不捕获日期或日期范围。

我试着把我的头绕在java的代码上,看看我是否可以修改或添加一些规则来实现这个工作,但是没有弄清楚。

如果有人能建议一种使用SUTime的方法,这将是非常有帮助的。

此外,我尝试了dateparser的search_dates,它不可靠,因为它捕获任何东西和所有东西。与第一个文档一样,它将解析文本"am out“(不是必需的)和"9/19”(没关系)的日期。因此,如果有一种方法来控制这种行为,它也会起作用。

EN

回答 1

Stack Overflow用户

发布于 2018-10-06 15:14:37

问题:无法捕获特定的日期格式

这个解决方案确实使用datetime而不是SUTime

代码语言:javascript
复制
import datetime

def datetime_from_string(datestring):
    rules = [('(\d{1,2}\/\d{1,2})', '%m/%d', {'year': 2018}), ('(\w+ \d{1,2})-(\w+ \d{1,2})', '%B %d', {'year': 2018})]
    result = None
    for rule in rules:
        match = re.match(rule[0], datestring)
        if match:
            result = []
            for part in match.groups():
                try:
                    date = datetime.strptime(part, rule[1])
                    if rule[2]:
                        for key in rule[2]:
                            if key == 'year':
                                date = datetime(rule[2][key], date.month, date.day)

                    result.append(date)
                except ValueError:
                    pass
            return result

    # If you reach heare, NO matching rule
    raise ValueError("Datestring '{}', does not match any rule!".format(datestring))

# Usage

for datestring in ['9/19', 'September 18-September 20', '2018-09-01']:
    result = datetime_from_string(datestring)
    print("str:{} result:{}".format(datestring, result))

输出: str:'9/19‘result:datetime.datetime(2018,9,19,0,0) str:“9月18日-9月20日”结果:[ datetime.datetime(2018,9,18,0,0),datetime.datetime(2018,9,20,0,0) ValueError: Datestring '2018-09-01',不符合任何规则!

用Python测试的:3.4.2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52675017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档