- How To Concatenate String and Int in Python
- Example
- Prerequisites
- Using the str() Function
- Using the % Interpolation Operator
- Using the str.format() function
- Using f-strings
- Conclusion
- Python string with integer
- Преобразование строки Python в int
- Преобразование Python int в строку
- Заключение
- Python string to int and int to string
- 1. Python String to int Conversion
- Conversion of Python String to int with a different base
- ValueError Exception while Python String to int conversion
- Converting a Python list of Integer to a list of String
- 2. Python int to String Conversion
- Conclusion
- References
How To Concatenate String and Int in Python
Python supports string concatenation using the + operator. In most other programming languages, if we concatenate a string with an integer (or any other primitive data types), the language takes care of converting them to a string and then concatenates it.
However, in Python, if you try to concatenate a string with an integer using the + operator, you will get a runtime error.
Example
Let’s look at an example for concatenating a string ( str ) and an integer ( int ) using the + operator.
current_year_message = 'Year is ' current_year = 2018 print(current_year_message + current_year)
The desired output is the string: Year is 2018 . However, when we run this code we get the following runtime error:
Traceback (most recent call last): File "/Users/sammy/Documents/github/journaldev/Python-3/basic_examples/strings/string_concat_int.py", line 5, in print(current_year_message + current_year) TypeError: can only concatenate str (not "int") to str
So how do you concatenate str and int in Python? There are various other ways to perform this operation.
Prerequisites
In order to complete this tutorial, you will need:
This tutorial was tested with Python 3.9.6.
Using the str() Function
We can pass an int to the str() function it will be converted to a str :
print(current_year_message + str(current_year))
The current_year integer is returned as a string: Year is 2018 .
Using the % Interpolation Operator
We can pass values to a conversion specification with printf-style String Formatting:
print("%s%s" % (current_year_message, current_year))
The current_year integer is interpolated to a string: Year is 2018 .
Using the str.format() function
We can also use the str.format() function for concatenation of string and integer.
print("<><>".format(current_year_message, current_year))
The current_year integer is type coerced to a string: Year is 2018 .
Using f-strings
If you are using Python 3.6 or higher versions, you can use f-strings, too.
print(f'current_year_message>current_year>')
The current_year integer is interpolated to a string: Year is 2018 .
Conclusion
You can check out the complete Python script and more Python examples from our GitHub repository.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Python string with integer
Здесь Python понимает, что вы хотите сохранить целое число 110 в виде строки или используете целочисленный тип данных:
Важно учитывать, что конкретно подразумевается под «110» и 110 в приведённых выше примерах. Для человека, который использовал десятичную систему счисления всю жизнь очевидно, что речь идёт о числе сто десять. Однако другие системы счисления, такие, как двоичная и шестнадцатеричная, используют иные основания для представления целого числа.
Например, вы представляете число сто десять в двоичном и шестнадцатеричном виде как 1101110 и 6e соответственно.
А также записываете целые числа в других системах счисления в Python с помощью типов данных str и int:
>>> binary = 0b1010 >>> hexadecimal = "0xa"
Обратите внимание, что binary и hexadecimal используют префиксы для идентификации системы счисления. Все целочисленные префиксы имеют вид 0? , где ? заменяется символом, который относится к системе счисления:
- b: двоичная (основание 2);
- o: восьмеричная (основание 8);
- d: десятичная (основание 10);
- x: шестнадцатеричная (основание 16).
Техническая подробность: префикс не требуется ни в int , ни в строковом представлении, когда он определён логически.
int предполагает, что целочисленный литерал – десятичный:
>>> decimal = 303 >>> hexadecimal_with_prefix = 0x12F >>> hexadecimal_no_prefix = 12F File "", line 1 hexadecimal_no_prefix = 12F ^ SyntaxError: invalid syntax
У строкового представления целого числа больше гибкости, потому что строка содержит произвольные текстовые данные:
>>> decimal = "303" >>> hexadecimal_with_prefix = "0x12F" >>> hexadecimal_no_prefix = "12F"
Каждая из этих строк представляет одно и то же целое число.
Теперь, когда мы разобрались с базовым представлением целых чисел с помощью str и int , вы узнаете, как преобразовать Python строку в int .
Преобразование строки Python в int
Если вы записали десятичное целое число в виде строки и хотите преобразовать строку Python в int , то передайте строку в метод int() , который возвращает десятичное целое число:
По умолчанию int() предполагает, что строковый аргумент представляет собой десятичное целое число. Однако если вы передадите шестнадцатеричную строку в int() , то увидите ValueError :
>>> int("0x12F") Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '0x12F'
Сообщение об ошибке говорит, что строка – недопустимое десятичное целое число.
Важно понимать разницу между двумя типами неудачных результатов при передаче строки в int() :
- Синтаксическая ошибка ValueError возникает, когда int() не знает, как интерпретировать строку с использованием предоставленного основания (10 по умолчанию).
- Логическая ошибка int() интерпретирует строку, но не так, как то ожидалось.
Вот пример логической ошибки:
>>> binary = "11010010" >>> int(binary) # Using the default base of 10, instead of 2 11010010
В этом примере вы подразумевали, что результатом будет 210 – десятичное представление двоичной строки. К сожалению, поскольку точное поведение не было указано, int() предположил, что строка – десятичное целое число.
Гарантия нужного поведения – постоянно определять строковые представления с использованием явных оснований:
>>> int("0b11010010") Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '0b11010010'
Здесь получаете ValueError , потому что int() не способен интерпретировать двоичную строку как десятичное целое число.
Когда передаёте строку int() , указывайте систему счисления, которую используете для представления целого числа. Чтобы задать систему счисления применяется base :
Теперь int() понимает, что вы передаёте шестнадцатеричную строку и ожидаете десятичное целое число.
Техническая подробность: аргумент base не ограничивается 2, 8, 10 и 16:
Отлично! Теперь, когда тонкости преобразования строки Python в int освоены, вы научитесь выполнять обратную операцию.
Преобразование Python int в строку
Для преобразования int в строку Python разработчик использует str() :
По умолчанию str() ведёт себя, как int() : приводит результат к десятичному представлению:
В этом примере str() блеснул «умом»: интерпретировал двоичный литерал и преобразовал его в десятичную строку.
Если вы хотите, чтобы строка представляла целое число в другой системе счисления, то используйте форматированную строку (f-строку в Python 3.6+) и параметр, который задаёт основание:
>>> octal = 0o1073 >>> f"" # Decimal '571' >>> f"" # Hexadecimal '23b' >>> f"" # Binary '1000111011'
str – гибкий способ представления целого числа в различных системах счисления.
Заключение
Поздравляем! Вы достаточно много узнали о целых числах и о том, как представлять и преобразовывать их с помощью типов данных Python.
- Как использовать str и int для хранения целых чисел.
- Как указать явную систему счисления для целочисленного представления.
- Как преобразовать строку Python в int .
- Как преобразовать Python int в строку.
Теперь, когда вы усвоили материал о str и int , читайте больше о представлении числовых типов с использованием float(), hex(), oct() и bin()!
Python string to int and int to string
In this article, we will understand the conversion of Python String to Int and int to string conversion. In Python, the values are never implicitly type-casted. Let’s find out how to explicitly typecast variables.
1. Python String to int Conversion
Python int() method enables us to convert any value of the String type to an integer value.
string_num = '75846' print("The data type of the input variable is:\n") print(type(string_num)) result = int(string_num) print("The data type of the input value after conversion:\n") print(type(result)) print("The converted variable from string to int:\n") print(result)
The data type of the input variable is: The data type of the input value after conversion: The converted variable from string to int: 75846
Conversion of Python String to int with a different base
Python also provides us with an efficient option of converting the numbers/values of the String type to integer values under a particular base in accordance with the number system.
int(string_value, base = val)
string_num = '100' print("The data type of the input variable is:\n") print(type(string_num)) print("Considering the input string number of base 8. ") result = int(string_num, base = 8) print("The data type of the input value after conversion:\n") print(type(result)) print("The converted variable from string(base 8) to int:\n") print(result) print("Considering the input string number of base 16. ") result = int(string_num, base = 16) print("The data type of the input value after conversion:\n") print(type(result)) print("The converted variable from string(base 16) to int:\n") print(result)
In the above snippet of code, we have converted ‘100’ to the integer value with base 8 and base 16 respectively.
The data type of the input variable is: Considering the input string number of base 8. The data type of the input value after conversion: The converted variable from string(base 8) to int: 64 Considering the input string number of base 16. The data type of the input value after conversion: The converted variable from string(base 16) to int: 256
ValueError Exception while Python String to int conversion
Scenario: If any of the input string contains a digit that does not belong to the decimal number system.
In the below example, if you wish to convert string ‘A’ to an integer value of A with base 16 and we do not pass base=16 as an argument to the int() method, then it will raise ValueError Exception.
Because even though ‘A‘ is a hexadecimal value, still as it does not belong to the decimal number system, it won’t consider A to be equivalent to decimal 10 unless and until we don’t pass base = 16 as an argument to the int() function.
string_num = 'A' print("The data type of the input variable is:\n") print(type(string_num)) result = int(string_num) print(type(result)) print("The converted variable from string(base 16) to int:\n") print(result)
The data type of the input variable is: Traceback (most recent call last): File "main.py", line 4, in result = int(string_num) ValueError: invalid literal for int() with base 10: 'A'
Converting a Python list of Integer to a list of String
Python list containing integer elements can be converted to a list of String values using int() method along with List Comprehension.
st_lst = ['121', '144', '111', '564'] res_lst = [int(x) for x in st_lst] print (res_lst)
2. Python int to String Conversion
Python str() method enables us to convert any value of the integer type to an String value.
int_num = 100 print("The data type of the input variable is:\n") print(type(int_num)) result = str(int_num) print("The data type of the input value after conversion:\n") print(type(result)) print("The converted variable from int to string:\n") print(result)
The data type of the input variable is: The data type of the input value after conversion: The converted variable from int to string: 100
Conclusion
In this article, we have understood the conversion of Python String to Integer and vice-versa.