Tengo el siguiente código
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Me gustaría obtener el resultado:
Print percent % in sentence and not have it break.
Lo que realmente sucede:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
python
escaping
python-2.7
jondykeman
fuente
fuente

\%? Esa fue mi suposición, me sorprende descubrir que, en%%cambio, parece bastante contradictorio.% isignifica "una representación decimal de un número entero, rellenado a la izquierda con espacios."\%en realidad sería\\%cuando se escribe en código ordinario.<escape><escape>es el patrón típico que he visto, y\resulta ser el personaje de escape más común, para bien o para mal.\si tuvieras que imprimir\\%? Es probable que deba escapar mediante la repetición de caracteres especiales, si los caracteres especiales tampoco son especiales dependiendo de las circunstancias.Respuestas:
fuente
print('%s%%' % 100)impresiones100%. Peroprint('%%')huellas%%. Por lo tanto, parece que no tiene que escapar de los signos% si no realiza sustituciones.%método en realidad está en desuso (en Python 3) a favor destr.format(): docs.python.org/2/library/stdtypes.html#str.format%método no se deprecia en Python 3.6. Continuará siendo compatible en lugar de su similitud con c, c ++, etc.str.format()y se prefieren las cadenas f pero no se aplican.%signo. Simplemente%lo haréAlternativamente, a partir de Python 2.6, puede usar un nuevo formato de cadena (descrito en PEP 3101 ):
lo cual es especialmente útil a medida que sus cuerdas se vuelven más complicadas.
fuente
formatestos días.intente usar
%%para imprimir el signo%.fuente
No puedes escapar selectivamente
%, ya que%siempre tiene un significado especial dependiendo del siguiente personaje.En la documentación de Python, en el bottem de la segunda tabla en esa sección, dice:
Por lo tanto, debe usar:
(tenga en cuenta el cambio explícito a tupla como argumento para
%)Sin saber lo anterior, habría hecho:
con el conocimiento que obviamente ya tenías.
fuente
Si la plantilla de formato se leyó de un archivo y no puede garantizar que el contenido duplique el signo de porcentaje, entonces probablemente tenga que detectar el carácter de porcentaje y decidir mediante programación si es el inicio de un marcador de posición o no. Entonces el analizador también debe reconocer secuencias como
%d(y otras letras que se pueden usar), pero también%(xxx)setc.Se puede observar un problema similar con los nuevos formatos: el texto puede contener llaves.
fuente
Si está utilizando Python 3.6 o posterior, puede usar f-string :
fuente
He intentado diferentes métodos para imprimir un título de subtrama, mira cómo funcionan. Es diferente cuando uso Latex.
Funciona con '%%' y 'string' + '%' en un caso típico.
Si usa Latex, funcionó usando 'string' + '\%'
Entonces, en un caso típico:
Ejemplos de títulos con%
Si usamos látex:
Obtenemos esto: Ejemplo de título con% y latex
fuente