Como han dicho otros, es necesario utilizar '\\'
. La razón por la que piensas que esto no funciona es porque cuando obtienes los resultados, parece que comienzan con dos barras diagonales inversas. Pero no comienzan con dos barras diagonales inversas, es solo que Python muestra dos barras diagonales inversas. Si no fuera así, no podría distinguir entre una nueva línea (representada como \n
) y una barra invertida seguida de la letra n (representada como \\n
).
Hay dos maneras de convencerse de lo que realmente está pasando. Uno es utilizar la impresión en el resultado, lo que hace que se expanda los escapes:
>>> x = "here is a backslash \\ and here comes a newline \n this is on the next line"
>>> x
u'here is a backslash \\ and here comes a newline \n this is on the next line'
>>> print x
here is a backslash \ and here comes a newline
this is on the next line
>>> startback = x.find('\\')
>>> x[startback:]
u'\\ and here comes a newline \n this is on the next line'
>>> print x[startback:]
\ and here comes a newline
this is on the next line
Otra forma es utilizar len
para verificar la longitud de la cadena:
>>> x = "Backslash \\ !"
>>> startback = x.find('\\')
>>> x[startback:]
u'\\ !'
>>> print x[startback:]
\ !
>>> len(x[startback:])
3
en cuenta que len(x[startback:])
es 3 La cadena contiene tres caracteres: barra invertida, espacio y signo de exclamación.Se puede ver lo que está pasando aún más simple con sólo mirar una cadena que contiene sólo una barra invertida:
>>> x = "\\"
>>> x
u'\\'
>>> print x
\
>>> len(x)
1
x
solamente parece que comienza con dos barras invertidas cuando se evalúa que en el modo interactivo (o cualquier otro uso que es __repr__
método). Cuando realmente lo imprimes, puedes ver que es solo una barra invertida, y cuando miras su longitud, puedes ver que tiene solo un carácter de largo.
Lo que esto significa es que necesita escapar de la barra invertida en su find
, y debe reconocer que las barras invertidas que se muestran en la salida también se pueden duplicar.
Esto se debe a que se debe evitar la barra invertida. De esta manera: 'source.find ('\\')'. – elmigranto
Cree que \ n son 2 caracteres. No lo son, es solo uno, por lo que no se puede omitir todo entre \ yn o r porque tendrían que tener 2 caracteres. – uselpa
Btw reloj para resaltar el código. En este caso, está mal, porque tu fuente está equivocada. Los indicadores secundarios como este son útiles para encontrar un error sin perder demasiado tiempo. –