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]