Hướng dẫn convert byte to dict python - chuyển đổi byte thành dict python

Tôi có một đối tượng loại byte như thế này:

b"{'one': 1, 'two': 2}"

Tôi cần lấy từ điển từ đó bằng mã Python. Tôi đang chuyển đổi nó thành chuỗi và sau đó chuyển đổi thành từ điển như sau.

string = dictn.decode("utf-8")
print(type(string))
>> 
d = dict(toks.split(":") for toks in string.split(",") if toks)

Nhưng tôi đang gặp lỗi dưới đây:

------> d = dict(toks.split(":") for toks in string.split(",") if toks)
TypeError: 'bytes' object is not callable

Hướng dẫn convert byte to dict python - chuyển đổi byte thành dict python

Đã hỏi ngày 9 tháng 3 năm 2018 lúc 0:05Mar 9, 2018 at 0:05

4

Tôi nghĩ rằng một giải mã cũng được yêu cầu để có được một độc lực thích hợp.

a= b"{'one': 1, 'two': 2}"
ast.literal_eval(a.decode('utf-8'))
**Output:** {'one': 1, 'two': 2}

Sản lượng câu trả lời được chấp nhận

a= b"{'one': 1, 'two': 2}"
ast.literal_eval(repr(a))
**output:**  b"{'one': 1, 'two': 2}"

The Literal_eval đã không thực hiện đúng với nhiều mã của tôi, vì vậy cá nhân tôi thích sử dụng mô -đun JSON cho việc này

import json
a= b"{'one': 1, 'two': 2}"
json.loads(a.decode('utf-8'))
**Output:** {'one': 1, 'two': 2}

Đã trả lời ngày 21 tháng 11 năm 2018 lúc 5:59Nov 21, 2018 at 5:59

Hướng dẫn convert byte to dict python - chuyển đổi byte thành dict python

H S Rathoreh S RathoreH S Rathore

1.7842 Huy hiệu vàng13 Huy hiệu bạc19 Huy hiệu đồng2 gold badges13 silver badges19 bronze badges

0

Tất cả những gì bạn cần là ____10. Không có gì huyền ảo hơn thế. Không có lý do gì để gây rối với JSON trừ khi bạn đặc biệt sử dụng cú pháp không phải là Python Dictax trong chuỗi của bạn.

# python3
import ast
byte_str = b"{'one': 1, 'two': 2}"
dict_str = byte_str.decode("UTF-8")
mydata = ast.literal_eval(dict_str)
print(repr(mydata))

Xem câu trả lời ở đây. Nó cũng chi tiết cách ____1010 an toàn hơn

string = dictn.decode("utf-8")
print(type(string))
>> 
d = dict(toks.split(":") for toks in string.split(",") if toks)
2.

Đã trả lời ngày 9 tháng 3 năm 2018 lúc 0:15Mar 9, 2018 at 0:15

mattmc3mattmc3mattmc3

17.1K7 Huy hiệu vàng82 Huy hiệu bạc100 Huy hiệu đồng7 gold badges82 silver badges100 bronze badges

1

Bạn có thể thử như thế này:

import json
import ast

a= b"{'one': 1, 'two': 2}"
print(json.loads(a.decode("utf-8").replace("'",'"')))

print(ast.literal_eval(a.decode("utf-8")))

Có tài liệu của mô -đun:

1. DOC

2.Json Doc

Đã trả lời ngày 9 tháng 3 năm 2018 lúc 0:18Mar 9, 2018 at 0:18

Bạn có thể sử dụng thư viện Base64 để chuyển đổi từ điển chuỗi thành byte và mặc dù bạn có thể chuyển đổi kết quả của byte thành từ điển bằng thư viện JSON. Hãy thử đây là mã mẫu dưới đây.

import base64
import json


input_dict = {'var1' : 0, 'var2' : 'some string', 'var1' : ['listitem1','listitem2',5]}

message = str(input_dict)
ascii_message = message.encode('ascii')
output_byte = base64.b64encode(ascii_message)

msg_bytes = base64.b64decode(output_byte)
ascii_msg = msg_bytes.decode('ascii')
# Json library convert stirng dictionary to real dictionary type.
# Double quotes is standard format for json
ascii_msg = ascii_msg.replace("'", "\"")
output_dict = json.loads(ascii_msg) # convert string dictionary to dict format

# Show the input and output
print("input_dict:", input_dict, type(input_dict))
print()
print("base64:", output_byte, type(output_byte))
print()
print("output_dict:", output_dict, type(output_dict))

Hướng dẫn convert byte to dict python - chuyển đổi byte thành dict python

Đã trả lời ngày 22 tháng 4 năm 2020 lúc 6:31Apr 22, 2020 at 6:31

Đơn giản 😁

data = eval(b"{'one': 1, 'two': 2}")

Đã trả lời ngày 13 tháng 6 lúc 15:57Jun 13 at 15:57

Hướng dẫn convert byte to dict python - chuyển đổi byte thành dict python

1