将字符串转换为int或float(如果可能)*

时间:2018-08-05 08:58:15

标签: python string int

我正在编写一个Python脚本,用于从频繁掉线的不稳定无线连接接收数据。我需要将接收到的字符串转换为各种int和float,但是通常数据会乱码,导致出现诸如“ int无效的文字”(或float)之类的错误。

数据以逗号分隔的int和float值的形式出现,但通常会缺少一些数字和/或逗号和/或行尾。

我正在寻找一个类似于Commodore 64的val(x $)函数的函数(对不起,仅供参考-我很旧):

print val("3")
3

print val("234xyz")
234

print val("55.123456*******")
55.123456

我想我可以通过try-catch运行每个数字,但这似乎有点过头了。没有这个功能吗?

2 个答案:

答案 0 :(得分:5)

您可以使用re.match从字符串的开头提取数字或小数点,然后转换为浮点数

>>> import re
>>> s = "55.123456*******"
>>> float(re.match(r'[\d.]*', s).group())
55.123456

答案 1 :(得分:4)

使用正则表达式。

import re

def getInt(val):
    m = re.match(r"\d+\.?\d*", val)
    return m.group() if m else None

print(getInt("3"))
print(getInt("234xyz"))
print(getInt("55.123456*******"))

输出:

3
234
55.123456