Python 自动将字符串转换为正确的数字类型

Python 自动将字符串转换为正确的数字类型,python,string,Python,String,我想知道是否有一种优雅而简单的方法将字符串(我知道可以转换为数字)转换为相应的数字类型。例如,如果我的字符串表示一个整数,我希望将该值转换为int;对于长的、浮的等等都一样。你可以使用ast.literal\u eval import ast examples = ["1", "1.5", "999999999999999999999999999999999999999999", "23+42j"] for item in examples: result = ast.literal_

我想知道是否有一种优雅而简单的方法将字符串(我知道可以转换为数字)转换为相应的数字类型。例如,如果我的字符串表示一个整数,我希望将该值转换为
int
;对于长的、浮的等等都一样。

你可以使用
ast.literal\u 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'>
1
1.5
999999999999999999999999999999999999999999
(23+42j)

您可以使用
ast.literal\u 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'>
1
1.5
999999999999999999999999999999999999999999
(23+42j)

同样适用于复数:)@marmeladze,true。我将添加一个示例。
ast.literal_eval
文档中的一条注释,适用于像我这样从未见过这种情况并担心安全性的人:“这可以用于安全地评估包含来自不可信来源的Python值的字符串”,也适用于复数:)@marmeladze,true。我将添加一个示例。
ast.literal\u eval
文档中的一条注释,适用于像我这样从未见过这种情况并担心安全性的人:“这可以用于安全地评估包含来自不受信任源的Python值的字符串”