variable valor usuario una teclado solicitar obtener numero introducir datos dato como capturar cadena python escaping python-2.7

valor - ¿Cómo puedo escapar selectivamente del porcentaje(%) en cadenas de Python?



obtener datos de teclado python (6)

Tengo el siguiente código

test = "have it break." selectiveEscape = "Print percent % in sentence and not %s" % test print(selectiveEscape)

Me gustaría obtener la salida:

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


Como alternativa, a partir de Python 2.6, puede usar el nuevo formato de cadena (descrito en PEP 3101 ):

''Print percent % in sentence and not {0}''.format(test)

que es especialmente útil ya que sus cuerdas se vuelven más complicadas.


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 usas Latex, funcionó usando ''string'' + ''/%''

Así que en un caso típico:

import matplotlib.pyplot as plt fig,ax = plt.subplots(4,1) float_number = 4.17 ax[0].set_title(''Total: (%1.2f'' %float_number + ''/%)'') ax[1].set_title(''Total: (%1.2f%%)'' %float_number) ax[2].set_title(''Total: (%1.2f'' %float_number + ''%%)'') ax[3].set_title(''Total: (%1.2f'' %float_number + ''%)'')

Ejemplos de títulos con%

Si utilizamos látex:

import matplotlib.pyplot as plt import matplotlib font = {''family'' : ''normal'', ''weight'' : ''bold'', ''size'' : 12} matplotlib.rc(''font'', **font) matplotlib.rcParams[''text.usetex''] = True matplotlib.rcParams[''text.latex.unicode''] = True fig,ax = plt.subplots(4,1) float_number = 4.17 #ax[0].set_title(''Total: (%1.2f/%)'' %float_number) This makes python crash ax[1].set_title(''Total: (%1.2f%%)'' %float_number) ax[2].set_title(''Total: (%1.2f'' %float_number + ''%%)'') ax[3].set_title(''Total: (%1.2f'' %float_number + ''/%)'')

Obtenemos esto: Ejemplo de título con% y látex


No puede escapar de forma selectiva % , ya que % siempre tiene un significado especial según el siguiente carácter.

En la documentation de Python, en la parte inferior de la segunda tabla en esa sección, se indica:

''%'' No argument is converted, results in a ''%'' character in the result.

Por lo tanto debes usar:

selectiveEscape = "Print percent %% in sentence and not %s" % (test, )

(tenga en cuenta el cambio expicit a tupla como argumento a % )

Sin saber lo anterior, habría hecho:

selectiveEscape = "Print percent %s in sentence and not %s" % (''%'', test)

Con el conocimiento que obviamente ya tenías.


Si se leyó la plantilla de formato de un archivo y no puede asegurarse de 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 comienzo de un marcador de posición o no. Luego, el analizador también debe reconocer secuencias como %d (y otras letras que pueden usarse), pero también %(xxx)s etc.

Se puede observar un problema similar con los nuevos formatos: el texto puede contener llaves.


intente usar %% para imprimir el signo%.


>>> test = "have it break." >>> selectiveEscape = "Print percent %% in sentence and not %s" % test >>> print selectiveEscape Print percent % in sentence and not have it break.