Wie kann man einen string komprimieren, und erhalten Sie einen string zurück mit zlib?
Ich versuche zu nutzen, die Zlib für text-Kompression.
Ich habe zum Beispiel einen string T='blah blah blah blah'
ich muss es komprimieren für diese Zeichenfolge. Ich bin mit S=zlib.compress(T)
zu komprimieren. Nun, was ich will, ist, um die nicht-binären form S
so, dass ich Dekomprimieren kann T
aber in einem anderen Programm.
Dank!
EDIT: ich glaube, ich habe eine Methode zu lösen, was ich wollte. Hier ist die Methode:
import zlib, base64
text = 'STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW '
code = base64.b64encode(zlib.compress(text,9))
print code
Gibt:
eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU=
Kann ich jetzt diesen code kopieren, um ein anderes Programm, um die ursprünglichen Variablen zurück:
import zlib, base64
s='eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU='
data = zlib.decompress(base64.b64decode(s))
print data
Bitte schlage vor, wenn Sie Kenntnis über weitere Komprimierung-Methode, die bessere Ergebnisse in Einklang mit dem obigen code.
- Die Nutzung der zlib zu Dekomprimieren S ?
- Was hindert Sie daran, mit zlib.Dekomprimieren() im anderen Programm?
- Sie akzeptieren meine Antwort auf Ihre Vorherige Frage? Das könnte mich ermutigen, Ihnen zu helfen, mit dieser neuen Frage. Jetzt verstehe ich, was Sie bekommen.
- Wie kann ich drucken Sie S so, dass ich es in einem anderen Programm ?
- Hinweis: die Komprimierung wirklich kleine Zeichenfolgen, die den Aufwand mit der komprimierten Daten ist wahrscheinlich länger als die ursprüngliche Zeichenfolge...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Programm 1:
Dieser speichert die komprimierten string in eine Datei namens
temp.zlib
so, dass das Programm 2 können Sie später abrufen und Dekomprimieren Sie es.Programm 2:
base64.b64encode(zlib.compress(text))
nur die Operationen invertiert und in umgekehrter Reihenfolgebase64
, wie bereits vorgeschlagen, ist es, was du bist suchen für.TypeError: a bytes-like object is required, not 'str'