Vérifier si une chaîne de caractères peut être convertie en float en Python

J'ai un peu de code Python qui s'exécute par le biais d'une liste de chaînes de caractères et les convertit en nombres entiers ou des nombres à virgule flottante, si possible. Faire cela pour les entiers est assez facile

if element.isdigit():
  newelement = int(element)

Des nombres à virgule flottante sont les plus difficiles. Actuellement, j'utilise partition('.') de diviser la chaîne et de la vérification pour s'assurer que l'un ou les deux côtés sont des chiffres.

partition = element.partition('.')
if (partition[0].isdigit() and partition[1] == '.' and partition[2].isdigit()) 
    or (partition[0] == '' and partition[1] == '.' and partition[2].isdigit()) 
    or (partition[0].isdigit() and partition[1] == '.' and partition[2] == ''):
  newelement = float(element)

Cela fonctionne, mais, évidemment, si l'instruction est un peu un ours. L'autre solution que j'ai envisagé de juste envelopper la conversion dans un bloc try/catch et de voir si elle réussit, comme décrit dans cette question.

Quelqu'un a d'autres idées? Avis sur les mérites relatifs de la partition et try/catch approches?