By using the int() function you can convert the string to int (integer) in Python. Besides int() there are other methods to convert. Converting a string to an integer is a common task in Python that is often necessary when working with user input, reading data from a file, or interacting with a database. There are several ways to do this, and it is important to understand the different methods and the potential use of each method.
Quick Examples of Converting String to Int
These quick examples include different approaches to give you a high-level overview of how to convert string to int. We will discuss this more in detail.
# Using the int() function
strObj = "123"
result = int(strObj)
# Using the float() function
strObj = "123.45"
float_num = float(strObj)
result = int(float_num)
# Using the bit_length()
strObj = "10010101"
result = int(strObj, 2)
# Using the PyNumber_Long()
import sys
strObj = "1234567890"
result = int(sys.intern(strObj))
1. Python Convert String to Int using int()
To convert string to int (integer) type use the int()
function. This function takes the first argument as a type String and second argument base. You can pass in the string as the first argument, and specify the base of the number if it is not in base 10. The int()
function can also handle negative integers by recognizing the negative sign in the string.
# Convert str to int
strObj = "987"
result = int(strObj)
print(result)
#Output:
#987
# Convert str with negative to int
strObj = "-654"
result = int(strObj)
print(result)
#Output:
#-654
If the string is not the valid integer value in the specified base, it will raise a ValueError
. You can use a try-except block to handle this error and ensure that your code runs smoothly. The int()
function is not able to convert a floating point number represented as a string into an integer.
# Convert string with non-int
try:
strObj = "123.45"
result = int(strObj)
except ValueError:
print("String is not an integer.")
#Output:
#String is not an integer.
2. Using Base Parameter of int()
You can use the base parameter to specify a base between 2 and 36, inclusive. For example, you can use the base parameter to convert a string that represents a base 8 (octal) number to an integer
# Use Base 2 (binary) while convertion
strObj = "10010101"
result = int(strObj, 2)
print(result)
#Output:
#149
# Base 8 (octal) while convertion
strObj = "765"
result = int(strObj, 8)
print(result)
#Output:
#501
# Base 36 (alphanumeric)
strObj = "zzzzz"
result = int(strObj, 36)
print(result)
# Output:
#60466175
3. Convert String to Int By Checking Is Digit
In the above examples, we saw that we will see a valueError
if something bad happens. You can use the isdigit()
method in combination with the int()
function to safely convert a string to an integer without encountering a ValueError
exception.
# Check if the str is a digit before convertion
def str_to_int(strObj: str) -> int:
if strObj.isdigit():
return int(strObj)
else:
return 0
strObj = "89"
result = str_to_int(strObj)
print(result)
#Output:
#89
strObj = "xyz"
result = str_to_int(strObj)
print(result)
#Output:
#0
4. Converting String with Float to Int
Sometimes you may be required to convert the string with a float value to int (integer) in Python. The float()
function can be used to convert a string to a float and pass the result to int()
to convert the floating-point number to an integer. As a result, the int()
function will remove any trailing decimals from the string.
Here is an example of using the float()
& int()
functions to convert a string to an integer:
# Convert str with float to int
strObj = "12.56"
result = int(float(strObj))
print(result)
#Output:
#12
strObj = "23.000"
result = int(float(strObj))
print(result)
#Output:
#23
5. Handling Invalid Input
When the int()
function is used to convert a string to an integer, it will raise a ValueError
if the string is not a valid integer. This can happen if the string is empty, contains non-numeric characters, or has a leading or trailing whitespace.
You might have seen this in other examples as well. To handle this error, you can use a try
and except
statement as shown below.
# Handling invalid input example
# With Valid Integer
strObj = "53"
try:
result = int(strObj)
except ValueError:
result = 0
print(result)
#Output:
#53
# With invalid integer
strObj = "abc"
try:
result = int(strObj)
except ValueError:
result = 0
print(result)
#Output:
#0
6. Good Practices to Convert String to Integer in Python
The following methods of strings can be used to make sure that the string is ready to convert to an int in Python. These include removing leading and trailing whitespace using the strip()
method of string. It also includes removing any non-numeric characters using the replace()
method of string and extracting the numeric portion of the string using regular expressions.
6.1 Eliminating Whitespaces using strip()
This technique can be particularly useful if the string you are trying to convert contains leading or trailing whitespaces, which can cause the int()
function to raise a ValueError
exception when it is passed an invalid argument.
Below is an example of how you can use the strip()
method to remove leading and trailing whitespaces from a string before attempting to convert it to an integer.
# Strip whitespaces
strObj = " 67 "
stripped_string = strObj.strip()
result = int(stripped_string)
print(result)
#Output:
#67
6.2 Removing non-numeric Characters using replace
To remove non-numeric characters from a string, you can use the replace()
method, which is a built-in method of the str
class in Python. The replace()
method will remove the characters specified in the old string argument.
# Remove non-numeric characters
strObj = "345xyz"
cleaned_string = strObj.replace("x", "").replace("y", "").replace("z", "")
result = int(cleaned_string)
print(result)
#Output:
#345
To make it more generalized, we can use the string module in python. Here is an example that shows you how to do that.
- Create a string of all alphabetical characters using
string.ascii_lowercase
andstring.ascii_uppercase
. - Use
translate()
withmaketrans()
to remove all alphabetical characters fromstring
. - Convert
cleaned_string
to an integer withint()
.
import string
strObj = "abc345xyz"
alphabet = strObj.ascii_lowercase + strObj.ascii_uppercase
cleaned_string = strObj.translate(strObj.maketrans("", "", alphabet))
result = int(cleaned_string)
print(result)
#Output:
#345
6.3 Extract Numeric Portion of String with regex
The re
module includes a variety of functions and methods that can be used to search, replace, and split strings using regular expressions. To extract the numeric portion of a string using regular expressions, you can use the re
module, which is a built-in module in Python that provides support for regular expressions.
#Extract numeric portion of string
import re
strObj = "123abc456"
match = re.search(r"\d+", strObj)
if match:
result = int(match.group())
print(result)
else:
print("Invalid input")
#Output:
#123456
7. Summary and Conclusion
In this article, we learned various techniques of how to convert string to int (integer) in Python. These methods can be useful for handling different types of input and requirements in your code. If you have any further questions about converting strings to integers in Python, don’t hesitate to ask.