Как автоматически преобразовать форматирование строки% в современный метод .format()

Я ищу способ преобразовать устаревший оператор форматирования строки % в функцию format() в коде python3.

ugly = 'Exception: the %s is over %+f' % (t, value)
good = 'Exception: the {} is over {:+f}'.format(e, value)

Конечно, я использую autopep8 при сохранении (через PyDev), но кажется, что нет возможности включить желаемое преобразование. Наиболее близким является вариант W690:

W690 - Fix various deprecated code (via lib2to3).

Но это не работает, как и явный запуск lib2to3. Любые решения приветствуются; лучше, если инструмент можно будет интегрировать в eclipse/pydev, например autopep8.


person Sergey Belash    schedule 04.10.2016    source источник
comment
Может быть, его следует задать по-другому, например: -formatted" title="как мне автоматически отформатировать некоторый код Python для правильного форматирования"> stackoverflow.com/questions/2625294/?   -  person Sergey Belash    schedule 04.10.2016
comment
% интерполяция строк не устарела. Но если вы действительно хотите заменить его чем-то новым, то зачем возиться с format, когда вы можете использовать f-строки? Например, f'Exception: the {t} is over {value:+f}'   -  person PM 2Ring    schedule 04.10.2016
comment
@cdarke Я согласен, что это не устарело; format - это просто мое предпочтение: я действительно считаю, что это делает код более читаемым и легким для i18n. @ 2Ring, стоит побеспокоиться, если только python 3.6 не выпущен в альфа-версии; но точно, я жду функцию f-string, она выглядит потрясающе   -  person Sergey Belash    schedule 04.10.2016
comment
@SergeyBelash: Сегодня утром я играл с f-строками (у меня 3.6.0b). Синтаксис в чем-то похож на Ruby, но форматирование делает их более мощными.   -  person cdarke    schedule 04.10.2016
comment
@SergeyBelash: я делал что-то несвязанное и понял, что форматирование % не имеет альтернативы для байтовых объектов. Объекты Bytes не имеют метода .format(). Так что % определенно не устарел.   -  person cdarke    schedule 04.10.2016