如何从列表中删除包含字母的字符串?

时间:2015-06-10 14:17:37

标签: python python-2.7 arduino-uno

我有一个包含字母,字符和数字的字符串的列表:

list = ['hello', '2U:', '-224.3', '45.1', 'SA 2']

我想只保留列表中的数字并将其转换为float值。我怎样才能做到这一点?我希望列表看起来像这样:

list = ['-224.3'. '45.1']

当我从Arduino执行serial.readline()时创建列表,它给出了一个由命令和数据点组成的字符串。所以我看起来像这样:

'hello,2U:,-224.3,45.1,SA 2'

我做了一个list.split(delimiter =','),并希望只有数据点供将来计算。

2 个答案:

答案 0 :(得分:2)

查看字符串是否可以投射到> F<- function(x){ + beta* x + alpha + } > alpha <- 1 > beta <- 2 > optimize(F,c(10,20)) $minimum [1] 10.00006 $objective [1] 21.00011 的最佳方法可能只是float来投射它。

try

之后,res = [] for x in lst: try: res.append(float(x)) except ValueError: pass res

将其转换为float并返回True,否则返回False。如果你只需要一次,那么循环就会缩短。

答案 1 :(得分:0)

您可以尝试以下内容 -

def isNum(s):
    try:
            float(s)
            return True
    except ValueError:
            return False
lst = ['hello', '2U:', '-224.3', '45.1', 'SA 2']
bools = list(map(lst,isNum))
deleted = 0
for idx, val in enumerate(bools):
    if val:
            continue
    else:
            del lst[idx-deleted]
            deleted = deleted + 1

修改

或者您可以使用

def isNum(s):
    try:
            float(s)
            return True
    except ValueError:
            return False
lst = ['hello', '2U:', '-224.3', '45.1', 'SA 2']
lst = list(filter(isNum, lst))