Строка Юникода в список

#python #django #unicode #django-views

#python #django #юникод #django-представления

Вопрос:

У меня есть список словарей, которые я отправил из своего файла javascript в свое представление. Теперь, когда я печатаю список, его тип отображается как unicode. Я хочу вернуть список, который у меня был изначально. Как я могу это сделать?

Мой список :

 [{"employee_id":13,"admin":false,"approver":false,"emp_code_or_email":"second@emp.com,120","manager":false,"emp_name":"second emp","department":"IT","position":"IT","new_emp":false,"manager_and_approver":false,"role_type":"employee","s_no":1},{"employee_id":144,"admin":false,"approver":false,"emp_code_or_email":"107anku@gmail.com,1","manager":true,"emp_name":"A1 A2","department":"IT","position":"Developer","new_emp":false,"manager_and_approver":false,"role_type":"manager","s_no":2}]
  

Я просто хочу извлечь идентификаторы employee_ids из этого.

Я пробовал eval() , list(), encode(‘utf-8’). Но безрезультатно.

Комментарии:

1. Почему проблема в том, что строки теперь являются значениями Unicode? В конце концов, это текст , и Python может обрабатывать смешивание (при условии, что вы не пытаетесь смешивать данные, не закодированные в ASCII, с Unicode).

2. Вы уже можете извлекать идентификаторы сотрудников из этого; lst[0]['employee_id'] работает, если ключ является юникодом или строкой байтов.

3. Весь этот список является юникодом. Я попробовал ваш код, но он выдал мне эту ошибку «строковые индексы должны быть целыми числами»

4. Значит, у вас есть JSON ?

5. employee_list = post_dict[’emps’] выведите «список emp», employee_list, введите (employee_list) для emp в employee_list: выведите emp, введите (emp) выведите «id», emp[0][’employee_id’] Это то, что я пробовал.

Ответ №1:

У вас есть строковое представление JSON. Я могу сказать это, посмотрев "admin":false , чтобы вы могли получить employee_id ‘s. Сначала вам нужно преобразовать каждое представление json, которое у вас есть в списке, в словарь.

 >>> import json
>>> data_raw = '''[{"employee_id":13,"admin":false,"approver":false,"emp_code_or_email":"second@emp.com,120","manager":false,"emp_name":"second emp","department":"IT","position":"IT","new_emp":false,"manager_and_approver":false,"role_type":"employee","s_no":1},{"employee_id":144,"admin":false,"approver":false,"emp_code_or_email":"107anku@gmail.com,1","manager":true,"emp_name":"A1 A2","department":"IT","position":"Developer","new_emp":false,"manager_and_approver":false,"role_type":"manager","s_no":2}]'''
>>> data_json = json.loads(data_raw)
>>> [data['employee_id'] for data in data_json]
[13, 144]
>>> 
  

Ответ №2:

Когда вы печатаете какие-либо объекты, python отобразит представление python этого объекта.

Чтобы отобразить его так, как вы хотите, вы должны отформатировать свой вывод.

Но самым простым способом будет преобразовать ее в json, поскольку вы получаете ее из ajax.

 import simplejson
simplejson.dumps(data)