Я работаю над сокращением URL для своего сайта, и мой текущий план (я открыт для предложений) заключается в использовании идентификатора узла для создания сокращенного URL. Таким образом, теоретически, узел 26 может быть short.com/z
, узел 1 может быть short.com/a
, узел 52 может быть short.com/Z
, а узел 104 может быть short.com/ZZ
. Когда пользователь переходит на этот URL, мне нужно полностью изменить процесс (очевидно).
Я могу придумать несколько хитрых способов сделать это, но, думаю, есть и лучшие. Какие-либо предложения?
Ответы:
ASCII в int:
дает
97
И вернемся к строке:
str(unichr(97))
chr(97)
дает
'a'
источник
источник
Если несколько символов связаны внутри одного целого / длинного, как это было моей проблемой:
Урожайность
'0123456789'
иx = 227581098929683594426425L
источник
Как насчет BASE58, кодирующего URL? Как, например, Flickr.
Превратить это обратно в число тоже не имеет большого значения.
источник
Используйте
hex(id)[2:]
иint(urlpart, 16)
. Есть и другие варианты. Кодировка base32 вашего идентификатора также может работать, но я не знаю, есть ли библиотека, которая выполняет кодирование base32, встроенную в Python.Очевидно, кодер base32 был представлен в Python 2.4 с модулем base64 . Вы можете попробовать использовать
b32encode
иb32decode
. Вы должны датьTrue
для обоихcasefold
иmap01
вариантыb32decode
в случае , если люди записывают свои сокращенные URL.На самом деле, я забираю это обратно. Я все еще думаю, что кодировка base32 - это хорошая идея, но этот модуль бесполезен в случае сокращения URL. Вы можете посмотреть на реализацию в модуле и сделать свою собственную для этого конкретного случая. :-)
источник