2016-10-29 2 views
1

Ich möchte HTML in eine Datei basierend auf der URL speichern.Kodierung URL zu kurzen eindeutigen Dateinamen

um einen eindeutigen Namen für URL zu erhalten, verwende ich UUID.

aber ich möchte den Namen weiter verkürzen. Gibt es eine Möglichkeit, die Zeichenfolge zu einer eindeutigen kleinen Zeichenfolge zu verkürzen?

Ich versuchte Base64, aber ich konnte nicht herausfinden.

>>> uuid.UUID(uuidstring).bytes.encode('base64').rstrip('=\n').replace('/', '_') 
>>> AttributeError: 'bytes' object has no attribute 'encode' 

verknüpft Frage: Convert UUID 32-character hex string into a "YouTube-style" short id and back

Antwort

2

Verwenden Sie das base64 Modul wie diese, kann es binäre Daten verarbeiten, dann die Decodierung als ascii auszuführen (wird arbeiten, weil Base64 ASCII- ist).

import uuid,base64 

url = "https://www.google.co.in/?gfe_rd=cr&ei=-koUWPf4HqzT8ge2g6HoBg&gws_rd=ssl" 
uuidstring = str(uuid.uuid5(uuid.NAMESPACE_DNS, url)) 
z=base64.encodebytes(uuid.UUID(uuidstring).bytes).decode("ascii").rstrip('=\n').replace('/', '_') 
print(z) 

Ergebnis:

pvEA9qOdX8COYyJf8zgzRA 
+0

ist '.replace ('/', '_')' notwendig ?. Wird dort '/' beim Konvertieren und Uuidstring zu base64 vorhanden sein? – Rahul

+0

ist es möglich, '/' zum Beispiel mit 'base64.encodebytes (b" ??? ")' zu bekommen. Es gibt noch ein weiteres Zeichen, das du entfernen musst: '+'. aber mit deiner string 'a6f100f6-a39d-5fc0-8e63-225ff3383344' ist es unwahrscheinlich, dass du recht hast, da du eine Menge folgender 1 Bits benötigen würdest. –

+0

danke. Ich werde nach einem großen Datensatz suchen und entsprechend aktualisieren. – Rahul

Verwandte Themen