8.8 C
New York

Remark compresser et encoder un dictionnaire en chaîne et retour en Python


Si vous avez un dictionnaire Python et que vous souhaitez l’encoder sous forme de chaîne et le compresser pour économiser de l’espace, peut-être pour transmettre un dictionnaire en tant que variable d’environnement ou similaire, vous pouvez procéder comme swimsuit

Fonctions Zip puis Encode / Decode puis Unzip

import json, gzip, base64
from io import BytesIO


def _zip_then_encode(knowledge: dict) -> str:
    """Gzip and base64 encode a dictionary"""
    if kind(knowledge) != dict:
        elevate TypeError("knowledge should be a dictionary")
    compressed = BytesIO()
    with gzip.GzipFile(fileobj=compressed, mode="w") as f:
        json_response = json.dumps(knowledge)
        f.write(json_response.encode("utf-8"))
    return base64.b64encode(compressed.getvalue()).decode("ascii")

def _decode_then_unzip(knowledge) -> dict:
    res = base64.b64decode(knowledge)
    res = gzip.decompress(res)
    res = res.decode("utf-8")
    res = json.hundreds(res)
    return res

Pour utiliser le encode et decode fonctions, vous pouvez effectuer les opérations suivantes :

Compressez et encodez le dictionnaire en chaîne

my_dict = {
    'somekey': {
        'one other': 'worth'
    }
}

encoded_str = _zip_then_encode(my_dict)
print(encoded_str)

Sortir:

H4sIAM0O9mMC/6tWKs7PTc1OrVSyUqhWSszLL8lILQKylcoSc0pTlWprAUha5+ghAAAA

Décodez et décompressez la chaîne dans le dictionnaire

Vous pouvez maintenant prendre la chaîne et l’inverser dans le dictionnaire comme swimsuit :

print(_decode_then_unzip(encoded_str))

Sortir:

{'somekey': {'one other': 'worth'}}

Related Articles

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Latest Articles