Создание словаря из текста & 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 шт):

Автор решения: V-Mor

Используйте модуль 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: По объективным причинам (читайте комментарии к ответу) второй вариант более предпочтителен.

→ Ссылка
Автор решения: Galina PT

есть втроенный метод eval

s = ' {"1": "one", "2":"two"} '

s_to_dict = eval(s)

print(type(s_to_dict)) #<class 'dict'>

→ Ссылка