1
votes

Quelle est la meilleure façon de convertir des paires clé: valeur de bytestring en chaîne?

Disons que j'ai un dict:

{'Name': 'John', 'age': '43'}

quel serait le meilleur moyen de le convertir en:

new_d = dict()
old_d = {b'Name': b'John', b'age': b'43'}

for item in old_d:
    print(item, old_d[item])
    new_d[item.decode('ascii')] = old_d[item].decode('ascii')
    print(new_d)

(En considérant que il peut y avoir n'importe quel nombre de paires clé: valeur)

Voici ce que j'ai en ce moment:

{'Name': 'John', 'age': '43'}

Résultat:

{b'Name': b'John', b'age': b'43'}


0 commentaires

3 Réponses :


2
votes
d = { b'Name': b'John', b'age': b'43' }
d = { x.decode('ascii'): d.get(x).decode('ascii') for x in d.keys() }

0 commentaires

1
votes

Essayez ceci:

x = {b'Name': b'John', b'age': b'43'}

y = {}

for key, value in x.items():
    y[key.decode("utf-8")] = value.decode("utf-8")

y
> {'Name': 'John', 'age': '43'}


0 commentaires

0
votes

Je ne peux pas tester cela pour le moment, mais vous devriez pouvoir tout décoder dans un nouveau dictionnaire. Vous devez spécifier l'encodage - je pense que UTF-8 est un bon défaut.

enc = 'utf-8'
s = {k.decode(enc), v.decode(enc) for k, v in d.items()}


1 commentaires

Joli one-liner. Bien que vous ayez mal orthographié la virgule: s = {k.decode (enc): v.decode (enc) pour k, v dans d.items ()}