Ну, проблема в том, что эта строка не является допустимым синтаксисом JSON. Это допустимый Python синтаксис, но не JSON, по двум причинам:
- JSON не допускает строки в одинарных кавычках,
'38'
, только двойные кавычки, "38"
.
- JSON не допускает u перед строкой,
u"38"
, только пустые строки, которые неявно являются Unicode, "38"
.
Вам нужно либо изменить формат ввода, либо использовать что-то, что может обрабатывать строки Python.
Вы можете использовать eval
, который читает строки, содержащие синтаксис Python, но учтите, что это очень опасно, если вы принимаете произвольный ввод, поскольку кто-то может предоставить код для выполнения. Тем не менее, это работает:
>>> eval(u"[u'38', u'36', u'34', u'32']")
[u'38', u'36', u'34', u'32']
Редактировать : ответ Хачика, вероятно, лучше, чем eval
, поскольку он не будет восприимчив к оценке произвольного кода Python, только к чтению структур данных Python.