Python中将字符串所表示的值进行int或float转换

这是一个小技巧,在做编译原理课设的过程中需要我将通过单词扫描器得到的单词进行类型判断是int类型还是float类型并调用对应的类型转换函数int()float(),然而我并有找到单独一个函数去做这个事情,于是通过使用几个函数组合解决了这个问题。

解决这个问题的思路是通过使用replace('.', '')函数将字符串中的’.’替换为空,然后调用isdigit()判断替换后的字符串是否全由数字组成,如果是则排除是字符串的组合。然后再次调用isdigit()函数辨别字符串中是否存在'.',如果有则说明是浮点数,否则为整数。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var0 = '1234'
var1 = '123.4'

def convert(var):
if var.replace('.', '').isdigit():
if var.isdigit():
return int(var)
else:
return float(var)
else:
return var

print('var0:', convert(var0))
print('var1:', convert(var1))

输出结果为:

1
2
('var0:', 1234)
('var1:', 123.4)