Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог в питоне js ф-ий escape и unescape 
V
    Опции темы
kulibinka
Дата 26.2.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



В яваскрипте:

Код

<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:33
PM MAIL   Вверх
kulibinka
Дата 26.2.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Нашел что "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

Видно что строки совсем не равны...
PM MAIL   Вверх
Goganchic
Дата 26.2.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: 1
Всего: 5



попробуй так

Код

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

PM Jabber   Вверх
Void
Дата 26.2.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 10
Всего: 173



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


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
kulibinka
Дата 26.2.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



urllib.unquote_plus подошло, спасибо smile

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

urllib.quote(text)

для "12345abcdex" выдает "12345abcdex".
PM MAIL   Вверх
Goganchic
Дата 26.2.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: 1
Всего: 5



попробуй такую функцию
Код

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

print full_escape("12345abcdex")

PM Jabber   Вверх
kulibinka
Дата 26.2.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Спасибо всем, особенно Goganchic smile
Все решилось.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.