Comment compresser une chaîne de caractères, et obtenir une chaîne de caractères de retour à l'aide de la librairie zlib?
J'essaie d'utiliser Zlib pour la compression de texte.
Par exemple, j'ai une chaîne T='blah blah blah blah'
j'ai besoin de le compresser pour cette chaîne. Je suis à l'aide de S=zlib.compress(T)
de le compresser. Maintenant ce que je veux, c'est d'obtenir la non-forme binaire de S
afin que je puisse décompresser T
mais dans un autre programme.
Merci!
EDIT: je suppose que je suis d'une méthode pour résoudre ce que je voulais. Voici la méthode:
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
Qui donne:
eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU=
Maintenant, je peux copier ce code à un autre programme pour obtenir la variable d'origine de retour:
import zlib, base64
s='eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU='
data = zlib.decompress(base64.b64decode(s))
print data
Veuillez indiquer si vous êtes au courant de toute autre méthode de compression qui permettrait de donner de meilleurs résultats qui sont cohérents avec le code ci-dessus.
Ce qui vous empêche d'utiliser zlib.décompresser() dans cet autre programme?
Allez-vous accepter ma réponse à votre question précédente? Qui pourrait m'encourager à vous aider avec cette question. Je comprends maintenant ce que vous obtenez.
Comment puis-je imprimer S de sorte que je peux l'utiliser dans un autre programme ?
Note compression vraiment des petites chaînes, les frais généraux grâce à la compression de données est susceptible d'être plus longue que la chaîne d'origine...
OriginalL'auteur Quixotic | 2011-01-30
Vous devez vous connecter pour publier un commentaire.
Programme 1:
Cela permet d'économiser le comprimé chaîne de caractères dans un fichier appelé
temp.zlib
de sorte que le programme 2, peut le récupérer plus tard et de le décompresser.Programme 2:
Ce troisième fichier? Ici, il n'y a qu'un seul fichier. Si vous faites le décompte de vos applications comme les fichiers, puis assurer, c'est une 3ème chose, mais si vous ne voulez pas jamais pour sérialiser les données sur le disque que vous allez avoir à nous fournir beaucoup plus d'entrée dans le fonctionnement de votre système.
Bastin:découvrez stackoverflow.com/questions/4844907/text-compression-in-python/..., Lennart Regebro réponse, ce que je ne reçois pas comment il a obtenu que les fichiers de la valeur sous cette forme.
Je ne comprends toujours pas le problème. Vous souhaitez échanger des données entre deux programmes différents, mais sans générer une réelle représentation des données (comme un fichier)?
c'est facile, il n':
base64.b64encode(zlib.compress(text))
, juste les opérations inversé, et dans l'ordre inverseOriginalL'auteur Tim Pietzcker