У меня строка выглядит как переменная javascript '{name: "John", age: 17}'
в Python, как я могу преобразовать ее в JSON, как это { "name": "John", "age": 17 }
или как для добавления двойных кавычек к name
поля и age
. json.loads
coudn't не помогите мне, он вернет мне строку не json
Вы уверены, что это правильный json - ключи в вашем примере, name
и age
не окружены кавычками, что само по себе является недопустимым.
Если это не так, например опечатка в вопросе, метод для использования - это dumps()
:
import json
py_dict = {"name": "John" , "age": 17}
json_val = json.dumps(py_dict) # string json representation of the dictionary
json_val2 =json.dumps(json.loads('{"name" : "John" , "age" : 17}')) # parsing a string as dictionary and then dumping it as a json-formatted string
Как вы можете видеть по второму примеру, loads()
принимает строку json и создает из него словарь.
Отвечая на обновленный вопрос: любая попытка проанализировать и исправить источник с заменой строки или регулярным выражением является подверженной ошибкам.
Поскольку yaml является надмножеством json, и ваш пример выглядит как yaml, он может анализировать его:
import yaml, json
val = '{name: "John" , age: 17}'
py_dict = yaml.loads(val) # it is now a proper python dictionary
print(json.dumps(py_dict))
# prints
# {"name": "John" , "age": 17}
name
и age
? Потому что у меня есть единственная строка, такая как '{name : "John" , age : 17}'