2010-05-20 4 views
2

J'ai du code pour chiffrer certaines chaînes en Python. Le texte chiffré est utilisé en tant que paramètre dans certaines URL, mais après le chiffrement, des barres obliques inverses apparaissent dans la chaîne et je ne peux pas utiliser un seul antislash dans urllib2.urlopen.Remplacer les barres obliques inverses dans les chaînes Python

Je ne peux pas remplacer un antislash simple par un double. Par exemple:

print cipherText 

'\[email protected]\xab7+\xc7\x93H\xdc\xd1\x13G\xe1\xfb' 

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

'\[email protected]\xab7+\xc7\x93H\xdc\xd1\x13G\xe1\xfb' 

La mise en avant de \ dans l'instruction replace n'a pas fonctionné.

Tout ce que je veux faire est d'appeler ce genre d'url:

http://awebsite.me/main?param="\[email protected]\xab7+\xc7\x93H\xdc\xd1\x13G\xe1\xfb" 

Et cette URL peut être appelé avec succès:

http://awebsite.me/main?param="\\[email protected]\\xab7+\\xc7\\x93H\\xdc\\xd1\\x13G\\xe1\\xfb" 

Répondre

7

probablement ce que vous voyez est pas un vrai « backslash caractère ", mais c'est la représentation sous forme de chaîne d'un caractère non imprimable (ou non-ascii). Par exemple \t est Tab, pas une barre oblique inverse et t.

Vous devez construire votre URL avec

"http://awebsite.me/main?%s" % (urllib.urlencode({'param': cipherText})) 
Questions connexes