У меня есть код 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 и посмотреть, удастся ли ему выполнить, как описано в этом вопросе.
У кого-нибудь есть другие идеи? Мнения относительно относительных достоинств раздела и попыток/подходов?