Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Аналог в питоне js ф-ий escape и unescape


Автор: kulibinka 26.2.2008, 13:31
В яваскрипте:

Код

<script LANGUAGE="JavaScript">
<!--
my_string = '%31%32%33%34%35%61%62%63%64%65%78';
x = unescape(my_string);
alert(x);
//-->
</SCRIPT>


Получим строку "12345abcdex".

Как на питоне сделать аналогичные ф-ии, которые бы умели "12345abcdex" в '%31%32%33%34%35%61%62%63%64%65%78' и обратно '%31%32%33%34%35%61%62%63%64%65%78' в "12345abcdex" переводить?

Автор: kulibinka 26.2.2008, 13:51
Нашел что "Each of the "%xy" groups is a % followed by a byte described in hexadecimal.  A little Perl or Python script should be able to decipher it for you pretty quick. "

Сделал скрипт, который должен бы переводить исходя из этого:

Код

def unescape (text):
    new_text = []
    symbols = text.split("%")
    for i in symbols:
        try:
#            print i,"%X" % int(i)
            new_text+="%X" % int(i)
        except:
            pass

    return "".join(new_text)

text = "%31%32%33%34%35%61%62%63%64%65"
print text, unescape(text)


Но он выдает
%31%32%33%34%35%61%62%63%64%65 
1F202122233D3E3F4041

Видно что строки совсем не равны...

Автор: Goganchic 26.2.2008, 14:23
попробуй так

Код

import urllib
print urllib.unquote_plus("%31%32%33%34%35%61%62%63%64%65")

Автор: Void 26.2.2008, 14:26
Эти функции уже есть в стандартной библиотеке, в модуле urllib: quote/unquote.

Автор: kulibinka 26.2.2008, 14:33
urllib.unquote_plus подошло, спасибо smile

А вот кодировать не получается - ф-я
Код

urllib.quote(text)

для "12345abcdex" выдает "12345abcdex".

Автор: Goganchic 26.2.2008, 16:38
попробуй такую функцию
Код

def full_escape(string):
    res = ""
    for i in string:
        res = res + "%" + hex(ord(i)).replace('0x', '')
    return res

print full_escape("12345abcdex")

Автор: kulibinka 26.2.2008, 17:20
Спасибо всем, особенно Goganchic smile
Все решилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)