2015-04-22 5 views
1

Мне было интересно, есть ли элегантный и простой способ преобразования строки (которую я знаю, можно преобразовать в число) до соответствующего числового типа. Например, если моя строка представляет целое число, я хочу, чтобы значение было преобразовано в int; тот же для long, float, и так далее.Автоматическое преобразование строки в нужный цифровой формат

+3

разместить свои попытки. –

ответ

5

Вы можете использовать ast.literal_eval.

import ast 

examples = ["1", "1.5", "999999999999999999999999999999999999999999", "23+42j"] 
for item in examples: 
    result = ast.literal_eval(item) 
    print result 
    print type(result) 

Результат:

1 
<type 'int'> 
1.5 
<type 'float'> 
999999999999999999999999999999999999999999 
<type 'long'> 
(23+42j) 
<type 'complex'> 
+0

также для комплексных номеров :) – marmeladze

+0

@marmeladze, true. Я добавлю пример. – Kevin

+0

Заметка из документов 'ast.literal_eval' для тех, кто любит меня раньше, и беспокоится о безопасности:« Это можно использовать для безопасной оценки строк, содержащих значения Python, из ненадежных источников » – chucksmash

Смежные вопросы