Python: определить значение какого типа записано в строке

Рейтинг: 1Ответов: 1Опубликовано: 22.04.2023

Есть строка в которой записано целое число, число с плавающей точкой или просто строка (до кучи можно придумать еще несколько типов, типа даты).

Подскажите - определить это можно только перебором в лоб по типу:

text = "13.6"

type = 'unknown'

try:
    value = int(text)
    type = 'int number'
except:
    try:
        value = float(text)
        type = 'float number'
    except:
        type = 'string'

или есть какие-то библиотечные более изящные способы? :)

Ответы

▲ 2Принят

Как упомянул @Сергей Кох в комментариях, вы можете использовать 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