Обычный способ - это format()
функция:
>>> s = "This is an {example} with {vars}".format(vars="variables", example="example")
>>> s
'This is an example with variables'
Он отлично работает со строкой многострочного формата:
>>> s = '''\
... This is a {length} example.
... Here is a {ordinal} line.\
... '''.format(length='multi-line', ordinal='second')
>>> print(s)
This is a multi-line example.
Here is a second line.
Вы также можете передать словарь с переменными:
>>> d = { 'vars': "variables", 'example': "example" }
>>> s = "This is an {example} with {vars}"
>>> s.format(**d)
'This is an example with variables'
Наиболее близким к тому, что вы просили (с точки зрения синтаксиса), являются строки шаблона . Например:
>>> from string import Template
>>> t = Template("This is an $example with $vars")
>>> t.substitute({ 'example': "example", 'vars': "variables"})
'This is an example with variables'
Я должен добавить, что эта format()
функция более распространена, потому что она легко доступна и не требует строки импорта.
vars()
или вlocals()
качестве рассматриваемого словаряdict
любом случае должны быть элементами в .{{this}}
.ПРИМЕЧАНИЕ . Рекомендуемый способ форматирования строк в Python - использовать
format()
, как указано в принятом ответе . Я сохраняю этот ответ как пример синтаксиса C-стиля, который также поддерживается.# NOTE: format() is a better choice! string1 = "go" string2 = "now" string3 = "great" s = """ I will %s there I will go %s %s """ % (string1, string2, string3) print(s)
Некоторое чтение:
источник
Вы можете использовать f-строки Python 3.6 для переменных внутри многострочных или длинных однострочных строк. Вы можете вручную указать символы новой строки, используя
\n
.Переменные в многострочной строке
string1 = "go" string2 = "now" string3 = "great" multiline_string = (f"I will {string1} there\n" f"I will go {string2}.\n" f"{string3}.") print(multiline_string)
Переменные в длинной однострочной строке
string1 = "go" string2 = "now" string3 = "great" singleline_string = (f"I will {string1} there. " f"I will go {string2}. " f"{string3}.") print(singleline_string)
В качестве альтернативы вы также можете создать многострочную f-строку с тройными кавычками.
multiline_string = f"""I will {string1} there. I will go {string2}. {string3}."""
источник
+
для объединения): stackoverflow.com/a/54564926/4561887Вот чего вы хотите:
>>> string1 = "go" >>> string2 = "now" >>> string3 = "great" >>> mystring = """ ... I will {string1} there ... I will go {string2} ... {string3} ... """ >>> locals() {'__builtins__': <module '__builtin__' (built-in)>, 'string3': 'great', '__package__': None, 'mystring': "\nI will {string1} there\nI will go {string2}\n{string3}\n", '__name__': '__main__', 'string2': 'now', '__doc__': None, 'string1': 'go'} >>> print(mystring.format(**locals())) I will go there I will go now great
источник
"""
сохраняют символы новой строки, а это означает, что перед и послеmystring
.strip()
,.rstrip()
или.lstrip()
, или ue люфт внутри тройных кавычек, чтобы избежать создания новой строки. mystring = "" "\ ABC \" ""Можно передать словарь
format()
, каждое имя ключа станет переменной для каждого связанного значения.dict = {'string1': 'go', 'string2': 'now', 'string3': 'great'} multiline_string = '''I'm will {string1} there I will go {string2} {string3}'''.format(**dict) print(multiline_string)
Также можно передать список,
format()
в этом случае порядковый номер каждого значения будет использоваться в качестве переменных.list = ['go', 'now', 'great'] multiline_string = '''I'm will {0} there I will go {1} {2}'''.format(*list) print(multiline_string)
Оба приведенных выше решения будут выводить одно и то же:
источник
Если кто-то пришел сюда из клиента python-graphql в поисках решения для передачи объекта в качестве переменной, вот что я использовал:
query = """ {{ pairs(block: {block} first: 200, orderBy: trackedReserveETH, orderDirection: desc) {{ id txCount reserveUSD trackedReserveETH volumeUSD }} }} """.format(block=''.join(['{number: ', str(block), '}'])) query = gql(query)
Не забудьте экранировать фигурные скобки, как я: "{{", "}}"
источник
f-строки , также называемые «форматированными строковыми литералами», представляют собой строковые литералы, которые имеют
f
в начале; и фигурные скобки, содержащие выражения, которые будут заменены их значениями.f-строки оцениваются во время выполнения.
Итак, ваш код можно переписать как:
string1="go" string2="now" string3="great" print(f""" I will {string1} there I will go {string2} {string3} """)
И это будет оценивать:
Вы можете узнать об этом подробнее здесь .
источник