У меня есть код 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?
type-conversion
вводит в заблуждение, что является четко определенным термином в некоторых языках. - person bombs   schedule 22.06.2021