Pregunta

Tengo algo de código para cifrar algunas cadenas en Python. texto cifrado se utiliza como parámetro en algunas direcciones URL, pero después de la encriptación, llega barras invertidas en la cadena y no se puede utilizar sola barra invertida en urllib2.urlopen.

No puedo reemplazar sola barra invertida con doble. Por ejemplo:

print cipherText 

'\t3-@\xab7+\xc7\x93H\xdc\xd1\x13G\xe1\xfb'

print cipherText.replace('\\','\\\\')

'\t3-@\xab7+\xc7\x93H\xdc\xd1\x13G\xe1\xfb'

También poniendo r frente a \ en la declaración sustituir no funcionó.

Todo lo que quiero hacer es llamar a ese tipo de url:

http://awebsite.me/main?param="\t3-@\xab7+\xc7\x93H\xdc\xd1\x13G\xe1\xfb"

Y también esta url se puede llamar éxito:

http://awebsite.me/main?param="\\t3-@\\xab7+\\xc7\\x93H\\xdc\\xd1\\x13G\\xe1\\xfb"
¿Fue útil?

Solución

Probablemente lo que está viendo no es un verdadero "carácter de barra invertida", sino que es la representación de cadena de un carácter no imprimible (o no-ascii). Por ejemplo \t es Tab, no una barra invertida y t.

Usted debe construir su URL con

"http://awebsite.me/main?%s" % (urllib.urlencode({'param': cipherText}))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top