如何从列表中删除包含字母的字符串?
How to remove strings that contain letters from a list?
我有一个列表,其中包含包含字母、字符和数字的字符串:
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=',') 并希望只有数据点用于未来的计算。
你可以试试下面的方法 -
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))
查看字符串是否可以转换为 float
的最佳方法可能是 try
转换它。
res = []
for x in lst:
try:
res.append(float(x))
except ValueError:
pass
之后,res
就是[-224.3, 45.1]
你 可以 也使它成为一个列表理解,类似于 [float(x) for x in lst if is_float(x)]
,但是为此你需要一个函数 is_float
同样的事情:尝试将其转换为 float 和 return True,否则 return False。如果你只需要一次,循环会更短。
我有一个列表,其中包含包含字母、字符和数字的字符串:
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=',') 并希望只有数据点用于未来的计算。
你可以试试下面的方法 -
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))
查看字符串是否可以转换为 float
的最佳方法可能是 try
转换它。
res = []
for x in lst:
try:
res.append(float(x))
except ValueError:
pass
之后,res
就是[-224.3, 45.1]
你 可以 也使它成为一个列表理解,类似于 [float(x) for x in lst if is_float(x)]
,但是为此你需要一个函数 is_float
同样的事情:尝试将其转换为 float 和 return True,否则 return False。如果你只需要一次,循环会更短。