Ich arbeite daran, einen URL-Shortener für meine Website zu erstellen. Mein aktueller Plan (ich bin offen für Vorschläge) besteht darin, eine Knoten-ID zum Generieren der verkürzten URL zu verwenden. Theoretisch könnte also Knoten 26 short.com/z
, Knoten 1 short.com/a
, Knoten 52 short.com/Z
und Knoten 104 sein short.com/ZZ
. Wenn ein Benutzer zu dieser URL geht, muss ich den Vorgang (offensichtlich) umkehren.
Ich kann mir einige klobige Wege vorstellen, um dies zu erreichen, aber ich vermute, es gibt bessere. Irgendwelche Vorschläge?
Antworten:
ASCII zu int:
gibt
97
Und zurück zu einer Zeichenfolge:
str(unichr(97))
chr(97)
gibt
'a'
quelle
quelle
Wenn mehrere Zeichen in einer einzigen Ganzzahl / Länge gebunden sind, war dies mein Problem:
Erträge
'0123456789'
undx = 227581098929683594426425L
quelle
Was ist mit BASE58, das die URL codiert? Wie zum Beispiel flickr.
Das wieder in eine Zahl umzuwandeln ist auch keine große Sache.
quelle
Verwenden Sie
hex(id)[2:]
undint(urlpart, 16)
. Es gibt andere Möglichkeiten. Die Base32-Codierung Ihrer ID könnte ebenfalls funktionieren, aber ich weiß nicht, dass es eine Bibliothek gibt, die die in Python integrierte Base32-Codierung ausführt.Anscheinend wurde in Python 2.4 mit dem base64-Modul ein base32-Encoder eingeführt . Sie könnten versuchen,
b32encode
und zu verwendenb32decode
. Sie solltenTrue
sowohl diecasefold
als auch diemap01
Optionen angeben,b32decode
falls Personen Ihre verkürzten URLs aufschreiben.Eigentlich nehme ich das zurück. Ich denke immer noch, dass die Base32-Codierung eine gute Idee ist, aber dieses Modul ist für den Fall der URL-Verkürzung nicht nützlich. Sie können sich die Implementierung im Modul ansehen und Ihre eigene für diesen speziellen Fall erstellen. :-)
quelle