如何解决将字符串转换为int,浮动或保留为字符串,具体取决于最佳选择
只是一个简短的问题:
我正在尝试处理仅包含str
的数据集,但是str
的值可以是真实文本,也可以是"1.0"
和"3.54"
之类的东西。 / p>
我想将所有字符串转换为最佳类型,这意味着1.0
应该转换为int
,3.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 举报,一经查实,本站将立刻删除。