   # Python string isnumeric() - How to check if a string is numeric

The `isnumeric()` checks if a string is numeric in Python. For example, `3` as a string is numeric because it can be regarded as an integer.

``````a1 = '7'
a2 = 'xyz'
a3 = '3.14'
a4 = 'stu2345'

b1 = a1.isnumeric()
b2 = a2.isnumeric()
b3 = a3.isnumeric()
b4 = a4.isnumeric()

print(b1)  # True
print(b2)  # False
print(b3)  # False
print(b4)  # False
``````

`3.14` is not numeric by the `isnumeric()` though we can convert it to float or Decimal.

``````from decimal import Decimal

a3 = '3.14'

f = float(a3)
d = Decimal(a3)

print(f)  # 3.14
print(d)  # 3.14
``````

## A Number with hyphen or comma is not numeric

A phone number often contain hyphens but it's basically an integer. The Python `isnumeric()` doesn't regard it as numeric. In many countries, large numbers are written with commas placed every third digit but its expression is not numeric in the `isnumeric()`.

``````a1 = '123-456-789'
a2 = '1,234,567'

b1 = a1.isnumeric()
b2 = a2.isnumeric()

print(b1)  # False
print(b2)  # False
``````

Note that a number with commas can't be converted to an integer by `int()`.

``````a = '1,234,567'

b = int(a)

# ValueError: invalid literal for int() with base 10: '1,234,567'
``````

The simple way to convert it to an int value is replacing commas with an empty string. But Python `locale` module has a method to read it as int. The `locale.atoi()` converts a
"numeric" string with commas to an integer.

``````import locale

locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

a = '1,234,567'
b = locale.atoi(a)

print(b)  # 1234567
``````

Before using this function, you should set the locale information as above.