Иногда при работе с Python возникает необходимость преобразовать строковое представление словаря обратно в словарь. Представим, что есть строка, которая представляет собой словарь:
s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
Цель — преобразовать эту строку обратно в словарь Python.
Одним из способов сделать это было бы использование функции eval()
, однако это может быть небезопасно, потому что eval()
может выполнять произвольный код. Так что лучше избегать его использования, если это возможно.
Более безопасным вариантом является использование модуля ast
и его функции literal_eval()
. В отличие от eval()
, literal_eval()
обрабатывает только простые литералы Python.
Вот как это может быть выполнено:
import ast s = "{'muffin' : 'lolz', 'foo' : 'kitty'}" d = ast.literal_eval(s)
После выполнения этих строк, d
будет словарем Python, который можно использовать как обычный словарь:
print(d) # Output: {'muffin': 'lolz', 'foo': 'kitty'}
Таким образом, если есть необходимость преобразовать строковое представление словаря обратно в словарь и при этом не использовать eval()
, то функция literal_eval()
из модуля ast
будет отличным выбором.
Добавить комментарий