Замена обратной косой черты в строках Python - PullRequest
2 голосов
/ 21 мая 2010

У меня есть код для шифрования некоторых строк в Python. Зашифрованный текст используется в качестве параметра в некоторых URL-адресах, но после шифрования в строке появляется обратный слеш, и я не могу использовать один обратный слеш в urllib2.urlopen.

Я не могу заменить одну обратную косую черту двойной. Например:

print cipherText 

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

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

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

Также не помогло поставить r перед оператором \ in replace.

Все, что я хочу сделать, это вызвать такой URL:

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

А также этот URL можно успешно назвать:

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

1 Ответ

7 голосов
/ 21 мая 2010

вероятно, что вы видите, это не настоящий "символ обратной косой черты", но это строковое представление непечатного (или не ascii) символа. Например, \t - это Tab, а не обратная косая черта, а t.

Вы должны построить свой URL с

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