- isdecimal
- isnumeric
How can I check if a string can be converted to a number?
- This solution only works for integers. Not for floating point numbers.
- We'll talk about this later. For now assume that the user enters something that can be converted to a number.
- Wrap the code in try-except block to catch any exception raised during the conversion.
- Use Regular Expressions (regexes) to verify that the input string looks like a number.
- Unicode Characters in the 'Number, Decimal Digit' Category
- isdecimal Decimal numbers (digits) (not floating point)
- isnumeric Numeric character in the Unicode set (but not floating point number)
- In your spare time you might want to check out the standard types of Python at stdtypes.
examples/basics/isnumber.py
val = input("Type in a number: ") print(val) print(val.isdecimal()) print(val.isnumeric()) if val.isdecimal(): num = int(val) print(num)
Type in a number: 42 42 True True 42
Type in a number: 4.2 4.2 False False
examples/basics/isnumber_other.py
val = '11' print(val.isdecimal()) # True print(val.isnumeric()) # True val = '1.1' print(val.isdecimal()) # False print(val.isnumeric()) # False val = '٣' # arabic 3 print(val.isdecimal()) # True print(val.isnumeric()) # True print(val) print(int(val)) # 3 val = '½' # unicode 1/2 print(val.isdecimal()) # False print(val.isnumeric()) # True # print(float(val)) # ValueError: could not convert string to float: '½' val = '②' # unicode circled 2 print(val.isdecimal()) # False print(val.isnumeric()) # True # print(int(val)) # ValueError: invalid literal for int() with base 10: '②'