Python не преобразует список строк в обычный список?

У меня есть вывод строки, который выглядит ниже

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 в обычный список?

используйте модуль ast --> ast.literal_eval(result)

Rakesh 29.05.2019 13:38

@souvik-ray это Python, а не JSON

fferri 29.05.2019 13:39

Я был бы больше обеспокоен тем, как вы вообще оказались со строковым представлением литерала Python…

deceze 29.05.2019 13:39

@deceze — это вывод базы данных Postgres.

Souvik Ray 29.05.2019 13:41

Как это вообще получило в базу данных…?

deceze 29.05.2019 13:41

Держу пари, кто-то думал, что делать str(some_list) — это то, как создаются jsons. PS. это не правильно.

Paritosh Singh 29.05.2019 13:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это,

>>> result = "[(u'Delhi', 20199330), (u'Mumbai', 134869470), (u'Kolkata', 6678446)]"
>>> import ast
>>> ast.literal_eval(result)
[('Delhi', 20199330), ('Mumbai', 134869470), ('Kolkata', 6678446)]

Другие вопросы по теме