我有一個腳本,用於讀取電子郵件並從正文中提取日期時間。這是工作的罰款,直至其收到的日期時間格式的電子郵件按如下:Python - 識別日期時間字符串並確保其日期時間可讀格式
06:00 Wednesday 22ndFebruary 2017
有22日和二月之間沒有空格,因此,當函數運行得到超時的身體我得到了錯誤
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:
...
你總是可以用'try - except'來捕捉異常嗎? –
我按照上面的說明,但我需要格式化正確的異常,這就是我不知道該怎麼做 – AlexW
[谷歌搜索將做](https://docs.python.org/3/tutorial/ errors.html#處理的例外)。 py2 –