微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将字符串转换为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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。