从Python中的字符串中提取年份

问题描述

有各种各样的方法可以实现,以下是几种选择:

  • dateutil“模糊”模式下的解析器

    In [1]: s = 'years since 1250-01-01 0:0:0'
    

    In [2]: from dateutil.parser import parse

    In [3]: parse(s, fuzzy=True).year # resulting year would be an integer Out[3]: 1250

  • 具有 捕获组的 正则表达式:

    In [2]: import re
    

    In [3]: re.search(r”years since (\d{4})”, s).group(1) Out[3]: ‘1250’

  • 先用“自”分割,再用破折号分割:

    In [2]: s.split("since", 1)[1].split("-", 1)[0].strip()
    

    Out[2]: ‘1250’

  • 甚至可能被第一个破折号分割成第一个子字符串:

    In [2]: s.split("-", 1)[0][-4:]
    

    Out[2]: ‘1250’

后两个涉及更多的“活动部分”,根据输入字符串的可能变化,可能不适用。

解决方法

我该如何解析该傻瓜。在python中提取年份:

'years since 1250-01-01 0:0:0'

答案应该是1250