Как определить тип данных из строки в python?
Ну вообще для этого есть встроенный модуль ast и его функция literal_eval.

import ast

str_number = '58'
print(ast.literal_eval(str_number))
# output: 58 - <type 'int'>

str_dict = '{"name": "vasya", "age": 30}'
print(type(ast.literal_eval(str_dict)))
# output: {"name": "vasya", "age": 30} - <type 'dict'>

Ну и т.д. в том же роде можете подставлять в виде строк остальные типы данных.
Проверять на isdigit(), например так
s = '665.3'
x = int(s) if s.isdigit() else float(s) if s.replace('.', '').isdigit() else s
Или же пытаться сразу преобразовать в int/float через try..except.