2011-01-16 16 views
57

¿Hay alguna forma de declarar una variable de cadena en python de modo que todo lo que está dentro de ella se escape automáticamente o tenga su valor de carácter literal?Cómo escribir cadenas literales en python sin tener que escapar de ellas?

Estoy no preguntando cómo escapar de las comillas con barras diagonales, eso es obvio. Lo que estoy pidiendo es una forma de propósito general para hacer que todo en una cadena sea literal para que no tenga que pasar manualmente y escapar de todo para cadenas muy grandes. Alguien sabe de una solución? ¡Gracias!

Respuesta

72

literales de cadena primas:

>>> r'abc\dev\t' 
'abc\\dev\\t' 
+17

'r'dir \ '' sin embargo es un error de lex –

+0

¿Para qué sirve este código? Disculpe mi ignorancia ... –

48

Si usted está tratando con muy grandes cadenas, en concreto líneas múltiples, ser consciente de la triple cita sintaxis:

a = r"""This is a multiline string 
with more than one line 
in the source code.""" 
+0

¿Esta construcción introduce caracteres de salto de línea? Es decir, ¿la variable 'a' contendrá una cadena con dos caracteres de salto de línea? – MadPhysicist

+6

@MadPhysicist: Sí, la cadena resultante contendrá dos nuevas líneas en el caso anterior. –

+0

Entendido.Y si se usa 'split()' en esta cadena, ¿se dividirá por líneas de forma predeterminada? – MadPhysicist

2

Va a encontrar Documentación literal de cadenas de Python aquí:

http://docs.python.org/tutorial/introduction.html#strings

y aquí:

http://docs.python.org/reference/lexical_analysis.html#literals

El ejemplo más simple sería utilizar el prefijo 'r':

ss = r'Hello\nWorld' 
print(ss) 
Hello\nWorld 
+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ review/low-quality-posts/16784654) – stovfl

5

No existe tal cosa. Parece que quieres algo así como "aquí documentos" en Perl y las conchas, pero Python no tiene eso.

Usar cadenas sin formato o cadenas de varias líneas solo significa que hay menos cosas de qué preocuparse. Si usas una cadena sin formato, entonces aún tienes que trabajar alrededor de una terminal "\" y con cualquier solución de cadena tendrás que preocuparte por el cierre ",", "" o "" "si está incluido en tus datos .

Es decir, no hay manera de tener la cadena

' ''' """ " \ 

correctamente almacenados en cualquier cadena literal Python sin escapar interna de algún tipo.

2

(Asumiendo que no están obligados a introducir la cadena directamente desde el código Python)

para moverse por la emisión Andrew Dalke señaló, simplemente escriba la cadena literal en un archivo de texto y utilizar este;

input_ = '/directory_of_text_file/your_text_file.txt' 
input_open = open(input_,'r+') 
input_string = input_open.read() 

print input_string 

Esto imprimirá el texto literal de lo que está en el archivo de texto, incluso si lo está;

' ''' """ “ \ 

No es divertido u óptimo, pero puede ser útil, especialmente si usted tiene 3 páginas de código que he necesitado carácter escape.

Cuestiones relacionadas