Если вы не хотите переписать strptime
(очень плохая идея), единственный реальный вариант, который у вас есть, это нарезать end_date
и отрубить лишние символы в конце, предполагая, что это даст вам правильный результат, который вы намереваюсь.
Например, вы можете перехватить ломтик ValueError
и повторить попытку:
def parse_prefix(line, fmt):
try:
t = time.strptime(line, fmt)
except ValueError as v:
if len(v.args) > 0 and v.args[0].startswith('unconverted data remains: '):
line = line[:-(len(v.args[0]) - 26)]
t = time.strptime(line, fmt)
else:
raise
return t
Например:
parse_prefix(
'2015-10-15 11:33:20.738 45162 INFO core.api.wsgi yadda yadda.',
'%Y-%m-%d %H:%M:%S'
) # -> time.struct_time(tm_year=2015, tm_mon=10, tm_mday=15, tm_hour=11, tm_min=33, ...