如何解决如何将字符串转换为数字?
注意:尽管链接的重复项不是重复项(它明确询问要分别转换为int和float),但仍将其标记为重复项,因为它包含有关该主题的出色信息(以及与我的解决方案类似的答案) )
摘要::我正在寻找一种将字符串转换为数字(整数或浮点数)的pythonic方法。
我目前正在使用瀑布函数,但在起作用时,它在美学上并不特别令人满意:
def convert_to_int_or_float(a):
# maybe an integer
try:
return int(a)
except ValueError:
# nope - so can be a float or a str
try:
return float(a)
except ValueError:
# must be a str
return a
for s in ["0","12","-13","14.7","-14.7","hello"]:
print(s,type(convert_to_int_or_float(s)))
# outputs
# 0 <class 'int'>
# 12 <class 'int'>
# -13 <class 'int'>
# 14.7 <class 'float'>
# -14.7 <class 'float'>
# hello <class 'str'>
有更好的方法吗?(最好是通过模块)
我看过math
,但那里什么也没找到。
解决方法
一种方法是使用ast
模块
例如:
import ast
def convert_to_int_or_float(a):
try:
return ast.literal_eval(a)
except ValueError:
return a
for s in ["0","12","-13","14.7","-14.7","hello"]:
print(s,type(convert_to_int_or_float(s)))
,
这可能会更好一点:
def convert_to_int_or_float(a):
try:
float(a)
return eval(a)
except ValueError:
# must be a str
return a
但是它仅适用于字符串输入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。