Ваша строка всегда будет соответствовать формату: 4 цифры для года + 2 цифры для месяца + цифры дня? Как насчет всех тех персонажей, которые появляются после, они актуальны? Чем они определяются?
На данный момент, есть решение, которое предполагает, что дата соответствует тому же формату и что остальная часть строки должна игнорироваться:
import datetime
parse_format = ‘%Y%m%d’
out_format = ‘%Y-%m-%d’
str_1 = ‘20190211004950Z’
parse_date_res = datetime.datetime.strptime(str_1[:8], parse_format)
date_str_out = parse_date_res.strftime(out_format)
ЭтоКод сначала разбирает строку в объект даты, так как я не был полностью уверен, что вы просто хотите получить строку в качестве вывода. В любом случае, если ничто не мешает вам использовать объект даты, то вам, вероятно, следует!