2015-11-23 2 views
0

Кажется, что форматирование строк не работает в конкатенированных строках. С конкатенацией держатель места печатается буквально:Форматирование конкатенированной строки python

>>> print("{}" + " OK".format("Text")) 
{} OK 

Однако без конкатенации формат распечатан, как он должен:

>>> print("{} OK".format("Text")) 
Text OK 

Той же проблема возникает с старым стилем% -formatting.

Если у меня длинная многострочная строка, где я хотел бы конкатенировать строку, которая должна быть отформатирована, каков рекомендуемый способ?

ответ

2

Вы пытались выполнить «формат» операции до делать конкатенацию. Вы можете исправить приоритет операций, используя круглые скобки:

>>> the_string = ("{}" + " OK").format("Text") 
>>> print(the_string) 
Text OK 
+0

PEP8, по-видимому, подразумевает, что это расстояние неверно или не одобрено: https://www.python.org/dev/peps/pep-0008/#whitespace-in-expressions-and-statements – dkhamrick

+0

Интервал не нарушает код, поэтому он не является «неправильным», , Это упрощает чтение кода, поэтому я добавил его по дидактическим причинам. Если это облегчит ваш разум, я немного распакую код. – Boa

0

Вам просто нужно исправить скобку:

print(("{}" + " OK").format("Text")) 
+0

Oh! Я думал, что функция формата является методом строки. Я бы подумал, что синтаксис сделает строку в единый кортеж элемента с строкой в ​​нем! Во всяком случае, попробовал, он работает! – 00prometheus

+0

Это не работает (обновление: в Python 3) - 'print' возвращает' None'. – kwinkunks

+0

Работал для меня. В интерпретаторе python: '>>> print (" {} "+" OK "). Format (" Текст ") Текст ОК ' – 00prometheus

Смежные вопросы