繁体   English   中英

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

[英]Convert string to int or float *if possible*

我正在编写一个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运行每个数字,但这似乎有点过头了。 没有这个功能吗?

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

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

使用正则表达式。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM