Я пытаюсь получить вывод функции, которая не имеет права устанавливать код результата. Я могу сказать, что это произошло из-за строки «error:», которая смешивается с потоком stderr, часто в середине другого сообщения о статусе преобразования.Вложенное понимание списка с использованием промежуточного результата
У меня есть следующее понимание списка, которое работает, но дважды проверяет строку «error:». Поскольку это только повторное сканирование фактических строк ошибок, оно работает нормально, но меня это раздражает, я не могу понять, как использовать одно сканирование. Вот рабочий код:
errors = [e[e.find('error:'):] for e in err.splitlines() if 'error:' in e]
Очевидная (и неправильно) способ упростить это, чтобы сохранить «найти» результат
errors = [e[i:] for i in e.find('error:') if i != -1 for e in err.splitlines()]
Однако, я получаю «UnboundLocalError: локальная переменная„е“, на который ссылается, прежде назначение». Слепое обращение вспять «за» в понимании также терпит неудачу. Как это делается?
Спасибо. Kent
Предоставить образец? – MattH
сначала. почему не регулярное для цикла с чем-то, что выглядит так мило, как это? –
'errors = filter (None, (e.split ('error:', 1) + [None]) [1] для e в err.splitlines())' – astynax