栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

检查字符串是否有日期,任何格式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

检查字符串是否有日期,任何格式

中的

parse
函数
dateutils.parser
能够将许多日期字符串格式解析为
datetime
对象。

如果您只是想知道某个特定字符串是否 可以 表示或包含有效日期,则可以尝试使用以下简单函数:

from dateutil.parser import parsedef is_date(string, fuzzy=False):    """    Return whether the string can be interpreted as a date.    :param string: str, string to check for date    :param fuzzy: bool, ignore unknown tokens in string if True    """    try:         parse(string, fuzzy=fuzzy)        return True    except ValueError:        return False

然后您有:

>>> is_date("1990-12-1")True>>> is_date("2005/3")True>>> is_date("Jan 19, 1990")True>>> is_date("today is 2019-03-27")False>>> is_date("today is 2019-03-27", fuzzy=True)True>>> is_date("Monday at 12:01am")True>>> is_date("xyz_not_a_date")False>>> is_date("yesterday")False

自定义解析

parse
可能会将某些字符串识别为日期,而您不想将其视为日期。例如:

  • 解析

    "12"
    "1999"
    返回一个表示当前日期的日和年在字符串中的数字取代的DateTime对象

  • "23, 4"
    并将
    "23 4"
    解析为
    datetime.datetime(2023, 4, 16, 0, 0)

  • "Friday"
    将返回未来最近的星期五的日期。

  • 同样
    "August"
    对应于当前日期,月份更改为8月。

此外,

parse
它也不支持区域设置,因此无法识别英语以外的其他语言的星期或星期几。

通过使用自定义

parserinfo
类,可以在一定程度上解决这两个问题,该类定义了如何识别月份和日期名称:

from dateutil.parser import parserinfoclass CustomParserInfo(parserinfo):    # three months in Spanish for illustration    MonTHS = [("Enero", "Enero"), ("Feb", "Febrero"), ("Marzo", "Marzo")]

然后可以将此类的实例与一起使用

parse

>>> parse("Enero 1990")# ValueError: Unknown string format>>> parse("Enero 1990", parserinfo=CustomParserInfo())datetime.datetime(1990, 1, 27, 0, 0)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626047.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号