Python: определить значение какого типа записано в строке
Есть строка в которой записано целое число, число с плавающей точкой или просто строка (до кучи можно придумать еще несколько типов, типа даты).
Подскажите - определить это можно только перебором в лоб по типу:
text = "13.6"
type = 'unknown'
try:
value = int(text)
type = 'int number'
except:
try:
value = float(text)
type = 'float number'
except:
type = 'string'
или есть какие-то библиотечные более изящные способы? :)
Ответы (1 шт):
Автор решения: diduk001
→ Ссылка
Как упомянул @Сергей Кох в комментариях, вы можете использовать ast.literal_eval
Вот код, который может помочь вам:
from ast import literal_eval
def get_type(var_str: str):
try: # Если не обрабатывается - значит, это строка
var_str = literal_eval(var_str)
var_type = type(var_str)
except ValueError:
var_type = str
return str(var_type)
print(get_type("aAaaA"))
# <class 'str'>
print(get_type("454545"))
# <class 'int'>
print(get_type("1.12"))
# <class 'float'>
В случае, если вы хотите добавить, например, дату / время, вам придётся использовать регулярные выражения. Вы можете почитать о них в официальной документации модуля re