【问题标题】:How to extract date which is in format as 'May 29 2002'[mm dd yyyy] in Python如何在 Python 中提取格式为“2002 年 5 月 29 日”[mm dd yyyy] 的日期
【发布时间】:2017-10-09 10:38:02
【问题描述】:

如何从一段文本中提取格式为“2002 年 5 月 29 日”[mm dd yyyy] 的日期并存储到不同的字段。

例如:

旧:

id       Description                                       
 1   A man died on March 22 2002 in an accident..(continues).  
 2   An employee died while operating lift on May 13 2001..(continues) 

新:

id       Date
 1       22-03-2002
 2       13-05-2001

我在 python 中使用 pandas 尝试了各种选项,但没有以正确的格式给出结果。请帮助我获得解决方案。

谢谢 恶魔

【问题讨论】:

    标签: python regex date


    【解决方案1】:

    使用 python 日期时间中的 strptime。

    import datetime
    datetime.datetime.strptime('May 29 2002', "%B %d %Y")
    

    这将返回一个日期时间对象。

    如果你想要一个日期对象,你可以试试下面的代码:

    datetime.datetime.strptime('May 29 2002', "%B %d %Y").date()
    

    https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

    【讨论】:

      【解决方案2】:

      先尝试基本库。

      安装:pip install parsedatetime

      代码:

      import parsedatetime
      p = parsedatetime.Calendar()
      parsed_data = p.parse("A man died on March 22 2002 in an accident..(continues)")
      day = parsed_data[0].tm_mday
      month = parsed_data[0].tm_mon
      year = parsed_data[0].tm_year
      

      如果有多个日期,我认为正则表达式会非常有用。 代码:

       day_pattern : r"(?P<day>(?:[12][0-9]|3[01]|0?[1-9]))(?:th|nd|rd|st)?"
       month_pattern : r"(?P<month>jan(?:uary)?|mar(?:ch)?|may|jul(?:y)?|aug(?:ust)?|oct(?:ober)?|dec(?:ember)?|sep(?:tember|t)?|apr(?:il)?|jun(?:e)?|nov(?:ember)?|feb(?:ruary)?)",
       year_pattern : r"(?P<year>(?:19|20)?\d\d)",
       mm_pattern : r"(?P<month>(?:0?[1-9]|1[012]))",
       dd_pattern : r"(?P<day>(?:[12][0-9]|3[01]|0?[1-9]))",
       yy_pattern : r"(?P<year>(?:19|20)?\d\d)",
      

      您需要检查每场比赛的位置,并根据这些位置决定多个日期。

      【讨论】:

      • ..非常感谢您的回答..只是怀疑它是否会识别文本中是否给出了两个日期?我发现它只需要最新的日期
      • 更新了答案。正则表达式会给你更好的匹配。
      猜你喜欢
      • 2011-05-16
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多