У меня есть вывод строки, который выглядит ниже
result = "[(u'Delhi', 20199330), (u'Mumbai', 134869470), (u'Kolkata', 6678446)]"
Теперь я хочу преобразовать его в обычный массив. Так вот что я делаю
import json
print(json.loads(result))
Но я получаю следующую ошибку
ValueError: No JSON object could be decoded
Теперь я знаю, что result
не json
. Но python преобразует список строк в обычный список, делая что-то вроде
some_list = "[10, 20, 30]"
print(json.loads(some_list))
Поэтому я надеялся, что он преобразует мой result
, который представляет собой строковый список кортежей, в обычный список кортежей. Но выдает ошибку.
Как преобразовать result
в обычный список?
@souvik-ray это Python, а не JSON
Я был бы больше обеспокоен тем, как вы вообще оказались со строковым представлением литерала Python…
@deceze — это вывод базы данных Postgres.
Как это вообще получило в базу данных…?
Держу пари, кто-то думал, что делать str(some_list)
— это то, как создаются jsons. PS. это не правильно.
Попробуй это,
>>> result = "[(u'Delhi', 20199330), (u'Mumbai', 134869470), (u'Kolkata', 6678446)]"
>>> import ast
>>> ast.literal_eval(result)
[('Delhi', 20199330), ('Mumbai', 134869470), ('Kolkata', 6678446)]
используйте модуль
ast
-->ast.literal_eval(result)