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.% i
significa "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
format
estos 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)s
etc.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