Я делаю веб-приложение, которое выполняет некоторую обработку данных, поэтому я часто разбираю строки (из URL или текстового файла) в значения Python.
Я использую функцию, которая "вроде"более безопасная версия eval (за исключением того, что если он не может прочитать строку, он остается строкой):
def str_to_value(string):
for atom in (True, False, None):
if str(atom) == string:
return atom
else:
try:
return int(string)
except ValueError:
try:
return float(string)
except ValueError:
return string
... однако, мне это кажется очень уродливым.Есть ли более чистый способ сделать это?Я нашел старое обсуждение или что-то вроде этого, но мне интересно, нет ли быстрого и простого способа (например, библиотечной функции, о которой я не знаю, или умного однострочного?).