Автоматически конвертировать старый стиль форматирования строки в f-строки - PullRequest
0 голосов
/ 13 мая 2018

Как я могу преобразовать строки форматирования в старом стиле Python, например:

print("You: %s points. Me: %s points." % (score, total - score))

в следующее?

print(f"You: {score} points. Me: {total - score} points.")

На самом деле, для случая двух %sЯ написал это регулярное выражение:

  • search: "(.*)%s(.*)%s(.*)" % \(([^,\)]+), ([^,\)]+)\)
  • replace: f"$1{$4}$2{$5}$3"

Можно легко написать несколько других регулярных выражений дляобработка дел 1, 3, 4, ... %s, но я ищу более общий и подверженный ошибкам подход.

Примечание: AFAIK, подобный вопрос был задан здесь в 2013 году( Автоматическое преобразование расширенного средства форматирования строк из старого стиля ), когда f-строки не были чем-то (они были введены в Python 3.6 ).

1 Ответ

0 голосов
/ 03 августа 2019

Использование pyupgrade. В частности, чтобы включить преобразование в f-строки, используйте

pyupgrade --py36-plus <filename>

Вы можете установить его с

pip install pyupgrade
...