separar reemplazar print por imprimir funcion comparar caracteres caracter cadenas python string format string-formatting curly-braces

reemplazar - ¿Cómo puedo imprimir caracteres literales en una cadena de python y también usar.format?



python separar string por caracter (10)

Aunque no es mejor, solo para la referencia, también puede hacer esto:

>>> x = ''{}Hello{} {}'' >>> print x.format(''{'',''}'',42) {Hello} 42

Puede ser útil, por ejemplo, cuando alguien quiere imprimir {argument} . Es quizás más legible que ''{{{}}}''.format(''argument'')

Tenga en cuenta que omite posiciones de argumentos (por ejemplo, {} lugar de {0} ) después de Python 2.7

x = " /{ Hello /} {0} " print x.format(42)

me da: Key Error: Hello//

Quiero imprimir la salida: {Hello} 42


El OP escribió este comentario:

I was trying to format a small JSON for some purposes, like this: ''{"all": false, "selected": "{}"}''.format(data) to get something like {"all": false, "selected": "1,2"}

Es bastante común que surja el problema de "llaves de escape" cuando se trata de JSON.

Sugiero hacer esto:

import json data = "1,2" mydict = {"all": "false", "selected": data} json.dumps(mydict)

Es más limpio que la alternativa, que es:

''{{"all": false, "selected": "{}"}}''.format(data)

Usar la biblioteca json es definitivamente preferible cuando la cadena JSON se complica más que el ejemplo.


Intenta hacer esto:

x = " {{ Hello }} {0} " print x.format(42)


La razón es, {} es la sintaxis de .format() por lo que en su caso .format() no reconoce {Hello} por lo que arrojó un error.

puede anularlo utilizando llaves dobles {{}},

x = " {{ Hello }} {0} "

o

intente %s para el formato de texto,

x = " { Hello } %s" print x%(42)


Necesitas doblar el {{ y }} :

>>> x = " {{ Hello }} {0} " >>> print x.format(42) '' { Hello } 42 ''

Aquí está la parte relevante de la documentación de Python para la sintaxis de cadenas de formato :

Las cadenas de formato contienen "campos de reemplazo" rodeados por llaves {} . Cualquier cosa que no esté contenida entre llaves se considera texto literal, que se copia sin cambios a la salida. Si necesita incluir un carácter de refuerzo en el texto literal, se puede escapar duplicando: {{ y }} .


Prueba esto:

x = "{{ Hello }} {0}"


Se te escapa doblando los tirantes.

P.ej:

x = "{{ Hello }} {0}" print x.format(42)


Si tiene que poner llaves alrededor de un valor de una clave de los diccionarios de parámetros o listas del método de formato, intente lo siguiente:

>>> "{o}Hello {a}{c}".format(**{"o":"{","c":"}","a":42}) ''{Hello 42}''


Si va a hacer esto mucho, podría ser bueno definir una función de utilidad que le permita usar sustitutos de llaves arbitrarios, como

def custom_format(string, brackets, *args, **kwargs): if len(brackets) != 2: raise ValueError(''Expected two brackets. Got {}.''.format(len(brackets))) padded = string.replace(''{'', ''{{'').replace(''}'', ''}}'') substituted = padded.replace(brackets[0], ''{'').replace(brackets[1], ''}'') formatted = substituted.format(*args, **kwargs) return formatted >>> custom_format(''{{[cmd]} process 1}'', brackets=''[]'', cmd=''firefox.exe'') ''{{firefox.exe} process 1}''

Tenga en cuenta que esto funcionará ya sea que los corchetes sean una cadena de longitud 2 o una iterable de dos cadenas (para delimitadores de múltiples caracteres).


Python 3.6+ (2017)

En las versiones recientes de Python, se usarían f-strings (ver también PEP498 ).

Con f-strings se debe usar el doble {{ o }}

n = 42 print(f" {{Hello}} {n} ")

produce lo deseado

{Hello} 42

Si necesita resolver una expresión entre corchetes en lugar de usar texto literal, necesitará tres conjuntos de corchetes:

hello = "HELLO" print(f"{{{hello.lower()}}}")

produce

{hello}