Каков наилучший способ преобразования пар ключ: значение из строки байтов в строку? - PullRequest
0 голосов
/ 17 января 2019

Допустим, у меня есть диктат:

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

Как лучше всего преобразовать это в:

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

(учитывая, что может быть любое количество пар ключ: значение)

Вот то, что у меня сейчас есть:

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)

Выход:

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

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Попробуйте это:

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 голосов
/ 17 января 2019

Я не могу проверить это прямо сейчас, но вы должны быть в состоянии декодировать все в новый словарь. Вы должны указать кодировку - я думаю, что UTF-8 является хорошим значением по умолчанию.

enc = 'utf-8'
s = {k.decode(enc), v.decode(enc) for k, v in d.items()}
0 голосов
/ 17 января 2019
d = { b'Name': b'John', b'age': b'43' }
d = { x.decode('ascii'): d.get(x).decode('ascii') for x in d.keys() }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...