¿Cómo puedo escapar selectivamente del porcentaje (%) en cadenas de Python?
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
Aceptado
>>> test = "have it break."
>>> selectiveEscape = "Print percent %% in sentence and not %s" % test
>>> print selectiveEscape
Print percent % in sentence and not have it break.
Alternativamente, a partir de Python 2.6, puedes usar un nuevo formato de cadena (descrito en PEP 3101 ):
'Print percent % in sentence and not {0}'.format(test)
lo cual es especialmente útil a medida que las cuerdas se vuelven más complicadas.
Intente usarlo %%
para imprimir el signo %.
No se puede escapar selectivamente %
, ya que %
siempre tiene un significado especial dependiendo del siguiente carácter.
En la documentación de Python, en la parte inferior de la segunda tabla de esa sección, dice:
'%' No argument is converted, results in a '%' character in the result.
Por lo tanto deberías utilizar:
selectiveEscape = "Print percent %% in sentence and not %s" % (test, )
(tenga en cuenta el cambio explícito a tupla como argumento para %
)
Sin saber lo anterior, habría hecho:
selectiveEscape = "Print percent %s in sentence and not %s" % ('%', test)
con los conocimientos que obviamente ya tenías.