Python: форматирование многострочных строк с переменными - PullRequest
4 голосов
/ 28 марта 2012

Я пишу скрипт Python на работе, который содержит часть с большой многострочной строкой, которая также должна расширять переменные.Я привык делать это следующим образом в Python 2.6 или Python 3:

message = """
          Hello, {foo}
          Sincerely, {bar}
          """
print (message.format(foo = "John", bar = "Doe"))

Однако на работающем сервере работает старая версия Python (2.3.4), которая не поддерживаетString.Format.Как это сделать в старых версиях Python?Можете ли вы сделать это с помощью оператора%?Я попробовал это, но это не сработало:

message = """
          Hello, %(foo)
          Sincerely, %(bar)
          """ % {'foo': 'John', 'bar': "Doe"}

Я мог бы просто сделать это без использования многострочных строк, но сообщения, которые мне нужно отформатировать, довольно большие с большим количеством переменных.Есть ли простой способ сделать это в Python 2.3.4?(Все еще новичок в Python, извините, если это глупый вопрос.)

Ответы [ 4 ]

13 голосов
/ 28 марта 2012

Вы хотите сказать

message = """
          Hello, %(foo)s
          Sincerely, %(bar)s
          """ % {'foo': 'John', 'bar': "Doe"}

Обратите внимание на s в конце, что делает общий формат "%(keyname)s" % {"keyname": "value"}

3 голосов
/ 28 марта 2012

Попробуйте это

message = """
          Hello, %(foo)s
          Sincerely, %(bar)s
          """ % {'foo': "John", 'bar': "Doe"}
2 голосов
/ 28 марта 2012

Форматирование строки на основе словаря

message = """
          Hello, %(foo)s
          Sincerely, %(bar)s
          """ % { "foo":"john","bar":"doe"}
0 голосов
/ 28 марта 2012

У вас есть опечатка:

message = """
          Hello, %(foo)
          Sincerely, %(bar)
          """ % {'foo': 'John", 'bar': "Doe"}
                        ^

Замените одинарную кавычку на двойную кавычку, и она должна нормально работать.

...