Создание словаря из текста & python
Во допустим у нас есть вот такая строка
' {"1": "one", "2": "two", "3": "three"} 'скаду ещё раз, это не словарь, а строка.
Мне нужно из этой строки создать словарь, то есть
s = ' {"1": "one", "2":"two"} '
print(f"STRING: {s}) #str
print(f"DICT: {s.функция}) #dict
>>>STRING: {"1": "one", "2":"two"}
>>>DICT: {"1": "one", "2":"two"}
Как это можно сделать?
Ответы (2 шт):
Используйте модуль json:
import json
s = ' {"1": "one", "2":"two"} '
print(f"STRING: {s}") #str
print(f"DICT: {json.loads(s)}") #dict
Функция json.loads как раз делает то, что Вам нужно. Однако будьте внимательны: кавычки внутри строки обязательно должны быть двойными. То есть, если бы строка была такая s = " {'1': 'one', '2':'two'} ", это бы не сработало.
Либо, как в комментарии посоветовал @MBo, воспользуйтесь ответом из данного вопроса. То есть, используйте модуль ast:
import ast
s = ' {"1": "one", "2":"two"} '
print(f"STRING: {s}") #str
print(f"DICT: {ast.literal_eval(s)}") #dict
В данном случае кавычки уже значения не имеют.
UPD: По объективным причинам (читайте комментарии к ответу) второй вариант более предпочтителен.
есть втроенный метод eval
s = ' {"1": "one", "2":"two"} '
s_to_dict = eval(s)
print(type(s_to_dict)) #<class 'dict'>