utilizar una cadena prima:
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
Tenga en cuenta que a pesar de que se ve mal, en realidad derecho. Solo hay una barra invertida en la cadena foo
.
Esto sucede porque cuando simplemente teclea foo
en el indicador, python muestra el resultado de __repr__()
en la cadena. Esto lleva a la siguiente (aviso sólo una barra invertida y sin comillas alrededor de la cadena print
ed):
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
>>> print foo
baz "\"
y vamos a seguir adelante porque hay más trucos de barra invertida. Si usted quiere tener una barra invertida al final de la cadena y utilizar el método anterior te encontrarás con un problema:
>>> foo = r'baz \'
File "<stdin>", line 1
foo = r'baz \'
^
SyntaxError: EOL while scanning single-quoted string
cuerdas primas no funcionan correctamente cuando se hace eso. Usted tiene que utilizar una cadena normal y escapar de sus barras invertidas:
>>> foo = 'baz \\'
>>> print foo
baz \
Sin embargo, si está trabajando con los nombres de archivos de Windows, usted se encontrará con un poco de dolor. Lo que se quiere hacer es utilizar barras diagonales y la función os.path.normpath()
:
myfile = os.path.normpath('c:/folder/subfolder/file.txt')
open(myfile)
Esto ahorrará una gran cantidad de escapar y secador de desgarramiento. This page fue útil al pasar por esto hace un tiempo.
Si imprime como Charles Duffy hizo anteriormente, aparecerá correctamente. Cuando estás haciendo solo "foo", Python está usando la función __repr __() para mostrar la cadena. Se imprime con una barra invertida adicional para que cuando asigne el resultado a una variable, el contenido sea idéntico. –
Excelente punto, he actualizado mi respuesta para agregar el "por qué". –