Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 18, 2010 12:08:58

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Научите работать с документацией

Часто можно найти (да чего уж там всегда =) ) автоматом нагененеренную для библиотек документацию например вот http://pydoc.org/2.5.1/encodings.punycode.html мне нужна функция конверта из/в punycod, если с классами все ясно (доступ по точке), что откуда и как. То вот раздел функции где и находятся нужные функции, что это и как их вызывать и раздел data, что это ?



Офлайн

#2 Ноя. 18, 2010 13:03:16

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Научите работать с документацией

>>> u'рус'.encode('punycode')
'p1acf'
>>> print 'p1acf'.decode('punycode')
рус



Офлайн

#3 Ноя. 18, 2010 18:49:15

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Научите работать с документацией

это отлично, но как вы это поняли исходя из выше приведенной доки ? =)



Офлайн

#4 Ноя. 18, 2010 18:58:06

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Научите работать с документацией

In : i = u'президент.рф'

In : i.encode('punycode')
Out: ‘.-abgm8zgbqk1dr4tcbbbbbincb’

Да и паникод странный мне нужен для перекодировки урлов, а тут такое.



Офлайн

#5 Ноя. 18, 2010 20:42:33

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Научите работать с документацией

Я знаю, как работает encoding в Питоне.
Та дока, которую вы открыли - это глубокие детали реализации.
Они нужны при разработке нового кодека - и, наверное, всё.
Интерфейс внешнего уровня гораздо проще - .encode у юникода и .decode у байт-строки.

Такое - это правильно закодированная строка. Доменные имена в душе именно так и выглядят. А вы что ожидали?



Офлайн

#6 Ноя. 19, 2010 08:19:59

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Научите работать с документацией

тогда задам вопрос по другому как получить код вида
xn–d1abbgf6aiiy.xn–p1ai



Офлайн

#7 Ноя. 19, 2010 10:41:21

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Научите работать с документацией

>>> u'президент.рф'.encode('idna')
'xn--d1abbgf6aiiy.xn--p1ai'



Офлайн

#8 Ноя. 19, 2010 11:59:53

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Научите работать с документацией

Мне вот что выдает

In [11]: u'президент.рф'.encode('idna')
---------------------------------------------------------------------------
UnicodeError Traceback (most recent call last)

/home/viklov/<ipython console> in <module>()

/usr/lib/python2.6/encodings/idna.pyc in encode(self, input, errors)
162 trailing_dot = ''
163 for label in labels:
--> 164 result.append(ToASCII(label))
165 # Join with U+002E

166 return ".".join(result)+trailing_dot, len(input)

/usr/lib/python2.6/encodings/idna.pyc in ToASCII(label)
74
75 # Step 2: nameprep

---> 76 label = nameprep(label)
77
78 # Step 3: UseSTD3ASCIIRules is false


/usr/lib/python2.6/encodings/idna.pyc in nameprep(label)
36 stringprep.in_table_c8(c) or \
37 stringprep.in_table_c9(c):
---> 38 raise UnicodeError("Invalid character %r" % c)
39
40 # Check bidi


UnicodeError: Invalid character u'\x80'



Офлайн

#9 Ноя. 19, 2010 13:37:55

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Научите работать с документацией

Ну уж не знаю, как вы это получили.
У вас стандартный test.test_codecs проходит нормально?
В нем есть проверки для idna на не ascii символы.



Офлайн

#10 Ноя. 19, 2010 14:50:12

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Научите работать с документацией

Уххх, видимо проблема с ipython, в обычной строке интерпретатора все нормально проходит.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version