将字符串转换为int,浮动或保留为字符串,具体取决于最佳选择

问题描述

只是一个简短的问题:

我正在尝试处理仅包含str的数据集,但是str的值可以是真实文本,也可以是"1.0""3.54"之类的东西。 / p>

我想将所有字符串转换为最佳类型,这意味着1.0应该转换为int3.54应该转换为float,其他所有内容停留str

这样做的最好方法是什么?

感谢您的帮助!

解决方法

让我们尝试

def convert(txt):
try:
    k = float(txt)
    if k%1 ==0:
        return int(k)
    return k

except ValueError:
    return txt

现在我在想的是,输入的数字是否为数字, 无论如何,我们可以浮动它。如果它也可以除以1,则它是一个int,我们就完成了。如果不是,那毕竟是浮点数,我们就完成了。 任何其他情况:我们无能为力,然后让我们将其退回

,

您可以使用try except块来执行操作。

for s in string:
    try:
        //convert to int or float
    except:
        pass
,

您可以使用

strings = ["some weird junk","1.0","2.345",-1000]

for string in strings:
    try:
        number,decimal = string.split(".")
        try:
            if decimal == "0":
                value = int(number)
            else:
                value = float(string)
        except:
            value = string
    except (ValueError,AttributeError):
        try:
            value = int(string)
        except ValueError:
            value = string

    print(value,type(value))

哪个产量

some weird junk <class 'str'>
1 <class 'int'>
2.345 <class 'float'>
-1000 <class 'int'>
,
def convert(string):
    possible = [str,int,float]
    for func in possible:
        try:
            result = func(string)
        except ValueError:
            continue
        if str(result) == string and type(result) is not str:
            return result
    return string

strings = ['hello','1','1.0','1.9']
for string in strings:
   result = convert(string)
   print(type(result),result)
Output:
<class 'str'> hello
<class 'int'> 1
<class 'float'> 1.0
<class 'float'> 1.9

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...