Hướng dẫn convert unicode to dict python - chuyển đổi unicode sang dict python

Tôi có Unicode u"{'code1':1,'code2':1}" và tôi muốn nó ở định dạng từ điển.

Tôi muốn nó ở định dạng {'code1':1,'code2':1}.

Tôi đã thử unicodedata.normalize('NFKD', my_data).encode('ascii','ignore') nhưng nó trả về chuỗi không phải từ điển.

Ai giúp tôi với?

hỏi ngày 19 tháng 2 năm 2013 lúc 5:10Feb 19, 2013 at 5:10

Hướng dẫn convert unicode to dict python - chuyển đổi unicode sang dict python

Sudhir Aryasudhir AryaSudhir Arya

3.7233 huy hiệu vàng29 Huy hiệu bạc43 Huy hiệu đồng3 gold badges29 silver badges43 bronze badges

Bạn có thể sử dụng gói ast tích hợp:

import ast

d = ast.literal_eval("{'code1':1,'code2':1}")

Trợ giúp về chức năng literal_eval trong mô -đun AST:

literal_eval(node_or_string)

Đánh giá an toàn một nút biểu thức hoặc một chuỗi chứa biểu thức python. Chuỗi hoặc nút được cung cấp chỉ có thể bao gồm các cấu trúc theo nghĩa đen Python sau: chuỗi, số, bộ dữ liệu, danh sách, dicts, booleans, và không có.

Đã trả lời ngày 19 tháng 2 năm 2013 lúc 5:19Feb 19, 2013 at 5:19

Hướng dẫn convert unicode to dict python - chuyển đổi unicode sang dict python

5

Bạn có thể sử dụng

from ast import literal_eval
from collections import MutableMapping

my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)
0. Bạn cũng có thể muốn chắc chắn rằng bạn đang tạo ra một dict và không phải là thứ khác. Thay vì
from ast import literal_eval
from collections import MutableMapping

my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)
1, hãy sử dụng xử lý lỗi của riêng bạn.

from ast import literal_eval
from collections import MutableMapping

my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)

Đã trả lời ngày 19 tháng 2 năm 2013 lúc 5:19Feb 19, 2013 at 5:19

Bạn có thể sử dụng

from ast import literal_eval
from collections import MutableMapping

my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)
0. Bạn cũng có thể muốn chắc chắn rằng bạn đang tạo ra một dict và không phải là thứ khác. Thay vì
from ast import literal_eval
from collections import MutableMapping

my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)
1, hãy sử dụng xử lý lỗi của riêng bạn.pyrospade

pyrospadepyrospade3 gold badges34 silver badges51 bronze badges

7.6003 huy hiệu vàng34 Huy hiệu bạc51 Huy hiệu đồng: Turns out my assumption was incorrect; because the keys are not wrapped in double-quote marks ("), the string isn't JSON. See here for some ways around this.

Chỉnh sửa: Hóa ra giả định của tôi không chính xác; Bởi vì các phím không được bọc trong các điểm trích dẫn kép ("), chuỗi không phải là JSON. Xem ở đây để biết một số cách xung quanh điều này.

Tôi đoán rằng những gì bạn có có thể là JSON, a.k.a. ký hiệu đối tượng JavaScript.

import json
result = json.loads(u"{'code1':1,'code2':1}")   # will NOT work; see above

Bạn có thể sử dụng mô-đun

from ast import literal_eval
from collections import MutableMapping

my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)
2 tích hợp của Python để thực hiện việc này:Apr 8, 2014 at 9:31

Hướng dẫn convert unicode to dict python - chuyển đổi unicode sang dict python

1

Đã trả lời ngày 8 tháng 4 năm 2014 lúc 9:31

import ast
job1 = {}
with open('hostdata2.json') as f:
  job1= json.loads(f.read())

f.close()

#print type before converting this from unicode to dic would be <type 'unicode'>

print type(job1)
job1 =  ast.literal_eval(job1)
print "printing type after ast"
print type(job1)
# this should result <type 'dict'>

for each in job1:
 print each
print "printing keys"
print job1.keys()
print "printing values"
print job1.values()

Tôi đã nhận được lỗi Unicode khi tôi đang đọc JSON từ một tệp. Vì vậy, điều này đã làm việc cho tôi.Jan 29, 2018 at 22:57

1

Đã trả lời ngày 29 tháng 1 năm 2018 lúc 22:57

>>> string_dict = u"{'code1':1, 'code2':1}"
>>> eval(string_dict)
{'code1': 1, 'code2': 1}

Đã trả lời ngày 19 tháng 2 năm 2013 lúc 5:19Feb 19, 2013 at 5:19

Bạn có thể sử dụng

from ast import literal_eval
from collections import MutableMapping

my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)
0. Bạn cũng có thể muốn chắc chắn rằng bạn đang tạo ra một dict và không phải là thứ khác. Thay vì
from ast import literal_eval
from collections import MutableMapping

my_dict = literal_eval(my_str_dict)
assert isinstance(my_dict, MutableMapping)
1, hãy sử dụng xử lý lỗi của riêng bạn.Ali-Akber Saifee

pyrospadepyrospade1 gold badge16 silver badges18 bronze badges

3

7.6003 huy hiệu vàng34 Huy hiệu bạc51 Huy hiệu đồng

import ast

ast.literal_eval(u"{u'city': u'new-york', u'name': u'Home', u'display_value': u'2 Main Street'}")
{u'city': u'new-york', u'name': u'Home', u'display_value': u'2 Main Street'}

Chỉnh sửa: Hóa ra giả định của tôi không chính xác; Bởi vì các phím không được bọc trong các điểm trích dẫn kép ("), chuỗi không phải là JSON. Xem ở đây để biết một số cách xung quanh điều này."

    Tôi đoán rằng những gì bạn có có thể là JSON, a.k.a. ký hiệu đối tượng JavaScript."

    Python có chấp nhận Unicode không?

    Loại chuỗi của Python sử dụng tiêu chuẩn Unicode để biểu diễn các ký tự, cho phép các chương trình Python hoạt động với tất cả các ký tự có thể khác nhau này., which lets Python programs work with all these different possible characters.

    Chúng ta có thể chuyển đổi Dict thành String trong Python không?

    Một phương pháp khác để chuyển đổi từ điển thành một chuỗi trong Python là sử dụng phương thức Dumps () của thư viện JSON.Phương thức Dumps () chiếm một đối tượng JSON làm tham số đầu vào và trả về chuỗi JSON.Nhớ lại!Để gọi phương thức Dumps (), bạn cần nhập thư viện JSON (khi bắt đầu mã của bạn).using the dumps() method of the JSON library. The dumps() method takes up a JSON object as an input parameter and returns a JSON string. Remember! To call the dumps() method, you need to import the JSON library (at the beginning of your code).