gpt4 book ai didi

Python - 识别日期时间字符串并确保其采用日期时间可读格式

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:00 25 4
gpt4 key购买 nike

我有一个脚本可以读取电子邮件并从正文中提取日期时间。它工作正常,直到收到一封日期时间格式如下的电子邮件:

06:00 Wednesday 22ndFebruary 2017

22 日和 2 月之间没有空格,因此当函数运行以从正文中获取时间时,我收到错误

Traceback (most recent call last):
File "email_processing.py", line 137, in <module>
e_start_time, e_end_time = main_dt(content)
File "email_processing.py", line 26, in main_dt
date = dateutil.parser.parse(re.search(pattern, data).group(0))
File "/usr/lib/python2.7/site-packages/dateutil/parser.py", line 1168, in parse
return DEFAULTPARSER.parse(timestr, **kwargs)
File "/usr/lib/python2.7/site-packages/dateutil/parser.py", line 559, in parse
raise ValueError("Unknown string format")
ValueError: Unknown string format

我当前的功能如下,任何人都可以想出一种方法来验证它/确保需要的地方有空格吗?鉴于字符串中的任何位置都可能存在空格问题,并且随着更多电子邮件的进入,日期显然会发生变化?

谢谢

def main_dt(data):
dates = []
for pattern in ['(?<=Start Time & Date: ).*', '(?<=Completion Time & Date: ).*']:
try:
date = dateutil.parser.parse(re.search(pattern, data).group(0))
except:
print re.search(pattern, data).group(0)
dates.append(date)
return dates

样本主体:

Dear Customer,

(Call Transferred) We are writing to inform you of planned engineering work taking place which could impact your service.

The affected site is : XXXXXX

Maintenance window:

Start Time & Date: 01:00 Wednesday 22nd February 2017
Completion Time & Date: 06:00 Wednesday 22ndFebruary 2017

Details of Work:
...

最佳答案

这更多的是一个正则表达式问题。

您捕获异常的部分,请确保使用以下方法重新格式化不正确的数据:

    validation_pattern = '(.*\\d+[a-z]{2})([A-Z].*)'
try:
date = dateutil.parser.parse(re.search(pattern, data).group(0))
except:
dirty_data_group = re.search(pattern, data).group(0)
tidy_data_group = re.sub(validation_pattern, r'\1 \2', dirty_data_group)
date = dateutil.parser.parse(tidy_data_group)

这应该每次都能在数组中获得正确的日期。然而,这仅限于您所指的具体问题,即该月的日期和月份本身之间没有空格。

关于Python - 识别日期时间字符串并确保其采用日期时间可读格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42220246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com