如何将字符串转换为int或float优先级为int?

Kob*_*ohn 10 python

当我想要这个时,我找不到另一个答案,所以我想我会为其他人发布我自己的解决方案,如果我做错了也会得到更正.

我必须创建一个自动配置文件解析器,如果可能的话我更喜欢使用int,如果不是,我会浮动.通常的try/except转换本身不起作用,因为任何float都只会被强制转换为int.

为了澄清有人问,案例基本上是将数字转换为编写配置文件数据的人.所以带小数的任何东西都可能是浮点数.另外,由于浮点数的性质,我认为float对于某些运算符(例如==,<,>)可能是危险的,并且int将在必要时转换为float.因此,我希望数字尽可能保持在int中.这不是一件大事,只是对我自己的一种约定.

Joh*_*hin 23

def int_or_float(s):
    try:
        return int(s)
    except ValueError:
        return float(s)
Run Code Online (Sandbox Code Playgroud)

如果你想要"10.0000"转换为int之类的东西,试试这个:

def int_dammit_else_float(s):
    f = float(s)
    i = int(f)
    return i if i == f else f
Run Code Online (Sandbox Code Playgroud)

您想要输入的结果如何"1e25"