You could write a safeFloat function that converts a string to a float and uses a default value for invalid strings. This could be used in a list comprehension or mapped with a filter if you don't want items that aren't numeric:
def safeFloat(S,default=None):
try: return float(S)
except: return default
my_strings = ['1', '42', '.3', 'a', 'b', 'c']
my_floats = [safeFloat(s,0) for s in my_strings]
[1.0, 42.0, 0.3, 0, 0, 0]
my_floats = [float(s) for s in my_strings if safeFloat(s) != None]
[1.0, 42.0, 0.3]
my_floats = list(filter(None,map(safeFloat,my_strings)))
[1.0, 42.0, 0.3]
If you're doing this often on lists or iterators, you can further encapsulate the conversion in a function that converts and filters multiple items
def getFloats(S,default=None):
yield from filter(None,map(safeFloat,S))
my_floats = [*getFloats(my_strings)]
[1.0, 42.0, 0.3]