Поиск типа переменной путем чтения файла - PullRequest
0 голосов
/ 30 января 2020

У меня есть несколько файлов, где я хочу прочитать их все и извлечь из них все переменные. В каждом файле есть несколько операторов печати, в которых я печатаю переменные.

Итак, я пытаюсь извлечь переменные из этих операторов печати, что можно легко сделать, разделив точку спецификации формата '%'.

Но вот реальная проблема. Как только я получу имя переменной, есть ли какой-нибудь возможный способ найти ее тип?

Если я напишу вслепую typeof(var), это даст мне строку столь же очевидную, как и звучит. Но я хочу знать фактический тип этой переменной! Может ли eval или ast.literal_eval помочь?

1 Ответ

0 голосов
/ 30 января 2020

Если я правильно понимаю, вы читаете значения из файлов (я предполагаю, что файлы ASCII). Затем вы сохраняете эти значения в переменных в виде строки. И вы хотели бы знать наиболее вероятный тип каждого значения. Хотя нет уникального ответа (1 может быть int, float или str в конце концов), следующее может указать вам направление:

def guess_type(value):
    try:
        float(value)
    except ValueError:
        return 'str'

    try:
        int(value)
        return 'int'
    except ValueError:
        return 'float'

guess_type('1.2')
guess_type('1.2e9')
guess_type('1')
guess_type('1a')

...