#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)