python – 如何将一个字符串转换为int或float的优先级为int?

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

我必须制作一个自动配置文件解析器,我喜欢使数字int可能,如果没有,则为浮动.通常的try / except转换本身不起作用,因为任何float将被强制转换为int.

要澄清一些有人问,情况基本上是将数字转换为编写配置文件数据的人.所以任何小数位都可能是一个浮点数.另外,由于浮点数的性质,我认为浮点数对于某些运算符来说可能是危险的(例如==,<>),而在必要时,int将被转换为float.所以我可以选择数字留在int.不是一件大事,就像我自己的一种习惯.

最佳答案
def int_or_float(s):
    try:
        return int(s)
    except ValueError:
        return float(s)

如果要将类似“10.0000”的内容转换为int,请尝试:

def int_dammit_else_float(s):
    f = float(s)
    i = int(f)
    return i if i == f else f

你想要输入如“1e25”的结果?

转载注明原文:python – 如何将一个字符串转换为int或float的优先级为int? - 代码日志