ValueError:时间数据'abc-xyz-listener.log.2016-10-18-180001'与格式'%Y-%m-%d'

时间:2016-11-16 09:53:19

标签: python datetime strptime

我有一个字符串,其中包含一个日期,我正在尝试将日期格式与strptime()匹配,但是它会抛出以下错误。

import datetime
datetime.datetime.strptime("abc-xyz-listener.log.2016-10-18-180001", "%Y-%m-%d")

我得到以下内容:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    datetime.datetime.strptime("abc-xyz-listener.log.2016-10-18-180001", "%Y-%m-%d")
  File "C:\Python27\lib\_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data 'abc-xyz-listener.log.2016-10-18-180001' does not match format '%Y-%m-%d'

有人帮助我,我在做错了。提前致谢

1 个答案:

答案 0 :(得分:2)

错误消息非常明确:"abc-xyz-listener.log.2016-10-18-180001"的格式不是"%Y-%m-%d"。没有太多要补充的内容。

你可以用正则表达式去除额外的东西:

import re
import datetime

string = 'abc-xyz-listener.log.2016-10-18-180001'

date_string = re.search(r'\d{4}-\d{2}-\d{2}', string).group()

print(date_string)
# 2016-10-18

print(datetime.datetime.strptime(date_string , "%Y-%m-%d"))
# 2016-10-18 00:00:00

如果try-except无法在输入字符串中找到有效日期,您可能还想添加一些re.search