【问题标题】:How can I parse string date with regex? [duplicate]如何使用正则表达式解析字符串日期? [复制]
【发布时间】:2020-08-19 11:55:37
【问题描述】:

我有 3 个可能的字符串日期。

我必须用正则表达式解析日期字符串

date = "13.06.2020"
date2 = "13-06-2020"
date3 = "13/06/2020"
for i in [date,date2,date3]:
    finder = re.findall(r'something',i) #I try findall but I think it doesn't work.
    print("day : " + finder[0])
    print("month : " + finder[1])
    print("year : " + finder[2])

它应该为所有可能性提供该输出。我用 Datetime 弄清楚,但我不能使用它。我已经使用 re

day:13
month:06
year:2020

大家有什么建议吗?

【问题讨论】:

  • 请分享您的尝试?另外,您必须使用正则表达式的任何具体原因?
  • r'something' 你的 RegEx 模式吗?
  • @GiladGreen 嗨,伙计。我只是想从一个网站上抓取日期,每个网站都有不同的类型。我必须解析所有的可能性。
  • @MuratDemir 仍然想知道为什么必须使用正则表达式。这是作业吗?

标签: python regex python-re


【解决方案1】:

试试这个

for i in [date,date2,date3]:
    finder = re.findall(r'(\d{1,2})[\.\-\/](\d{2})[\.\-\/](\d{4})',i)
    print("day : " + finder[0][0])
    print("month : " + finder[0][1])
    print("year : " + finder[0][2])

【讨论】:

    【解决方案2】:

    避免使用正则表达式来解析日期字符串。使用来自dateutil 模块的parser.parse(您可以使用cmd pip install python-dateutil 通过pip 安装)

    >>> from dateutil import parser
    >>> for date_str in [date,date2,date3]:
    ...     dt = parser.parse(date_str)
    ...     print(f"day : {dt.day}, month: {dt.month}, year: {dt.year}")
    ... 
    day : 13, month: 6, year: 2020
    day : 13, month: 6, year: 2020
    day : 13, month: 6, year: 2020
    

    【讨论】:

    • 我必须使用正则表达式。任务的通用正则表达式,我不知道为什么。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多