У меня есть некоторый код Python, который пробегает список строк и преобразует их в целые числа или числа с плавающей запятой, если это возможно. Сделать это для целых чисел довольно просто
if element.isdigit():
newelement = int(element)
Числа с плавающей точкой сложнее. Сейчас я использую partition('.')
для разделения строки и проверяю, чтобы одна или обе стороны были цифрами.
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)
Это работает, но, очевидно, выражение if для этого является чем-то вроде медведя. Другое решение, которое я рассмотрел, - просто обернуть преобразование в блок try / catch и посмотреть, успешно ли оно выполнено, как описано в этот вопрос .
У кого-нибудь есть еще идеи? Мнения об относительных достоинствах раздела и подходах try / catch?