La forma común es la format()
función:
>>> s = "This is an {example} with {vars}".format(vars="variables", example="example")
>>> s
'This is an example with variables'
Funciona bien con una cadena de formato de varias líneas:
>>> 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.
También puede pasar un diccionario con variables:
>>> d = { 'vars': "variables", 'example': "example" }
>>> s = "This is an {example} with {vars}"
>>> s.format(**d)
'This is an example with variables'
Lo más parecido a lo que preguntó (en términos de sintaxis) son las cadenas de plantillas . Por ejemplo:
>>> from string import Template
>>> t = Template("This is an $example with $vars")
>>> t.substitute({ 'example': "example", 'vars': "variables"})
'This is an example with variables'
Sin embargo, debo agregar que la format()
función es más común porque está disponible y no requiere una línea de importación.
vars()
olocals()
como el diccionario en cuestióndict
todos modos.{{this}}
.NOTA : La forma recomendada de formatear cadenas en Python es usar
format()
, como se describe en la respuesta aceptada . Conservo esta respuesta como un ejemplo de la sintaxis de estilo C que también es compatible.# 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)
Algo de lectura:
fuente
Puede usar cadenas f de Python 3.6 para variables dentro de cadenas de varias líneas o cadenas largas de una sola línea. Puede especificar manualmente caracteres de nueva línea usando
\n
.Variables en una cadena de varias líneas
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)
Variables en una cadena larga de una sola línea
string1 = "go" string2 = "now" string3 = "great" singleline_string = (f"I will {string1} there. " f"I will go {string2}. " f"{string3}.") print(singleline_string)
Alternativamente, también puede crear una cadena f de varias líneas con comillas triples.
multiline_string = f"""I will {string1} there. I will go {string2}. {string3}."""
fuente
+
para concatenar): stackoverflow.com/a/54564926/4561887Esto es lo que quieres:
>>> 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
fuente
"""
conservan las nuevas líneas, lo que significa que hay una nueva línea adicional antes y despuésmystring
.strip()
,.rstrip()
o.lstrip()
, o ue una reacción violenta dentro de las comillas triples para evitar crear una nueva línea. mystring = "" "\ ABC \" ""Se puede pasar a un diccionario
format()
, cada nombre de clave se convertirá en una variable para cada valor asociado.dict = {'string1': 'go', 'string2': 'now', 'string3': 'great'} multiline_string = '''I'm will {string1} there I will go {string2} {string3}'''.format(**dict) print(multiline_string)
También se puede pasar una lista
format()
, el número de índice de cada valor se utilizará como variables en este caso.list = ['go', 'now', 'great'] multiline_string = '''I'm will {0} there I will go {1} {2}'''.format(*list) print(multiline_string)
Ambas soluciones anteriores producirán lo mismo:
fuente
Si alguien vino aquí desde el cliente python-graphql buscando una solución para pasar un objeto como variable, esto es lo que usé:
query = """ {{ pairs(block: {block} first: 200, orderBy: trackedReserveETH, orderDirection: desc) {{ id txCount reserveUSD trackedReserveETH volumeUSD }} }} """.format(block=''.join(['{number: ', str(block), '}'])) query = gql(query)
Asegúrate de escapar de todas las llaves como hice yo: "{{", "}}"
fuente
f-strings , también llamados “literales de cadena formateados”, son literales de cadena que tienen un
f
al principio; y llaves que contienen expresiones que serán reemplazadas por sus valores.Las cadenas f se evalúan en tiempo de ejecución.
Entonces su código se puede reescribir como:
string1="go" string2="now" string3="great" print(f""" I will {string1} there I will go {string2} {string3} """)
Y esto evaluará a:
Puede obtener más información al respecto aquí .
fuente