Проверьте, является ли строка действительным числом - PullRequest
3 голосов
/ 11 мая 2011

Есть ли быстрый способ узнать, является ли строка действительным числом, если не считать ее по одному символу за раз и выполнить isdigit() для каждого символа? Я хочу иметь возможность проверять числа с плавающей запятой, например 0.03001.

Ответы [ 4 ]

12 голосов
/ 11 мая 2011

Если вы подразумеваете число с плавающей точкой как действительное число, это должно работать:

def isfloat(str):
    try: 
        float(str)
    except ValueError: 
        return False
    return True

Обратите внимание, что это внутренне по-прежнему будет зацикливать вашу строку, но это неизбежно.

7 голосов
/ 11 мая 2011
>>> a = "12345" # good number
>>> int(a)
12345
>>> b = "12345G" # bad number
>>> int(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12345G'

Вы можете сделать это:

def isNumber(s):
    try:
        int(s)
    except ValueError:
        return False
    return True

Если вы хотите число с плавающей запятой, замените int на float (спасибо @cobbal).

1 голос
/ 19 февраля 2013

Существует также другой способ использования регулярного выражения:

import re

def is_float(str):
    if re.match(r"\d+\.*\d*", str):
        return True
    else:
        return False
0 голосов
/ 01 июня 2017

Способ проверки действительного числа:

def verify_real_number(item):
""" Method to find if an 'item'is real number"""

item = str(item).strip()
if not(item):
    return False
elif(item.isdigit()):
    return True
elif re.match(r"\d+\.*\d*", item) or re.match(r"-\d+\.*\d*", item):
    return True
else:
    return False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...