作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我想要这个时我找不到另一个答案,所以我想我会为其他人发布我自己的解决方案,如果我做错了什么也会得到更正。
我必须制作一个自动配置文件解析器,我更喜欢尽可能将数字设为 int,否则设为 float。通常的 try/except 转换本身不起作用,因为任何 float 都会被强制转换为 int。
澄清一下,正如有人问的那样,这种情况基本上是按照编写配置文件数据的人的意图转换数字。所以任何带小数的东西都可能是一个 float 。此外,我认为由于 float 的性质,float 对于某些运算符(例如 ==、<、>)可能是危险的,并且 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 或优先于 int 的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608702/
我是一名优秀的程序员,十分优秀!