sirve - En Python, ¿puedes tener variables dentro de comillas triples? ¿Si es así, cómo?
secuencias de escape python (6)
Esta es probablemente una pregunta muy simple para algunos, pero me ha dejado perplejo. ¿Puedes usar variables dentro de las comillas triples de python?
En el siguiente ejemplo, ¿cómo se usan las variables en el texto?
wash_clothes = ''tuesdays''
clean_dishes = ''never''
mystring =""" I like to wash clothes on %wash_clothes
I like to clean dishes %clean_dishes
"""
print(mystring)
Me gustaría que resulte en:
I like to wash clothes on tuesdays
I like to clean dishes never
Si no, ¿cuál es la mejor manera de manejar grandes porciones de texto donde necesita un par de variables, y hay un montón de texto y caracteres especiales?
¡Sí! A partir de Python 3.6 puede usar las cadenas de caracteres para esto: están interpoladas en su lugar, por lo que la mystring
ya es el resultado requerido.
wash_clothes = ''tuesdays''
clean_dishes = ''never''
mystring = f"""I like to wash clothes on {wash_clothes}
I like to clean dishes {clean_dishes}
"""
print(mystring)
Creo que la forma más simple es str.format () como otros han dicho.
Sin embargo, pensé que mencionaría que Python tiene una string.Template clase de string.Template comienza en Python2.4.
Aquí hay un ejemplo de los documentos.
>>> from string import Template
>>> s = Template(''$who likes $what'')
>>> s.substitute(who=''tim'', what=''kung pao'')
''tim likes kung pao''
Una de las razones por las que me gusta esto es el uso de un mapeo en lugar de argumentos posicionales.
La forma preferida de hacer esto es usar str.format()
lugar del método que usa %
:
Este método de formato de cadenas es el nuevo estándar en Python 3.0, y debe preferirse al formato
%
descrito en Operaciones de formato de cadenas en el nuevo código.
Ejemplo:
wash_clothes = ''tuesdays''
clean_dishes = ''never''
mystring =""" I like to wash clothes on {0}
I like to clean dishes {1}
"""
print mystring.format(wash_clothes, clean_dishes)
Sí. Creo que esto funcionará
do_stuff = "Tuesday"
mystring = """I like to do stuff on %(tue)s""" % {''tue'': do_stuff}
EDITAR: olvidé una ''s'' en el especificador de formato.
También tenga en cuenta que no necesita la variable intermedia:
name = "Alain"
print """
Hello %s
""" % (name)
Una de las formas:
>>> mystring =""" I like to wash clothes on %s
... I like to clean dishes %s
... """
>>> wash_clothes = ''tuesdays''
>>> clean_dishes = ''never''
>>>
>>> print mystring % (wash_clothes, clean_dishes)
I like to wash clothes on tuesdays
I like to clean dishes never
También vea el formato de cadenas