Python f-string: замена новой строки / переноса строки - PullRequest
0 голосов
/ 18 мая 2019

Прежде всего, извините: я вполне уверен, что это может быть «дубликат», но мне не удалось найти правильное решение.

Я просто хочу заменить все разрывы строк в моем sql-кодедля записи в одну строку, но f-строка Python не поддерживает обратную косую черту, поэтому:

# Works fine (but is useless ;))
self.logger.debug(f"Executing: {sql.replace( 'C','XXX')}")

# Results in SyntaxError: 
# f-string expression part cannot include a backslash
self.logger.debug(f"Executing: {sql.replace( '\n',' ')}")

Конечно, есть несколько способов сделать это до f-строки,но мне бы очень хотелось, чтобы мой код «log the line» был в одной строке и без дополнительных вспомогательных переменных.

(Кроме того, я думаю, что это довольно глупое поведение: либо вы можете выполнять код в фигурных скобкахили вы не можете ... не "вы можете, но только без обратной косой черты" ...)

Это нежелательное решение из-за дополнительных переменных:

Как использовать новую строку '\ n' в f-строке для форматирования вывода в Python 3.6?

Общее обновление Предложение в комментарии mkrieger1s:

        self.logger.debug("Executing %s", sql.replace('\n',' '))

Работает нормально для меня, но так как он вообще не использует f-строки (сам по себе хороший или плохой;)), думаю, я смогу оставить этот вопрос открытым.

Ответы [ 2 ]

0 голосов
/ 18 мая 2019
  1. не используйте f-строки, особенно для регистрации
  2. присвойте новую строку константе и используйте то, что вы, очевидно, не хотите
  3. использовать другую версию выражения новой строки, chr(10) например

(Кроме того, я думаю, что это довольно глупое поведение: либо вы можете выполнять код в фигурных скобках, либо вы не можете ... не "вы можете, но только без обратной косой черты" ...)

Не стесняйтесь попытаться исправить это, я почти уверен, что это ограничение не было добавлено, потому что авторы PEP и разработчики функций хотели, чтобы это было болью в заднице.

0 голосов
/ 18 мая 2019

Вы можете сделать это

newline = '\n'
self.logger.debug(f"Executing: {sql.replace( newline,' ')}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...