Преобразование строки в число в Python. Особенности преобразования числа в строку
Иногда нам нужно выполнить преобразование строки в целое число либо в число с плавающей точкой. Потребность в этом возникает для осуществления ряда операций. Как это сделать в Python, мы сейчас и поговорим.
Чтобы осуществить преобразование строки в целое число либо число с плавающей точкой, в Python используют функции int и float. Если вы захотите выполнить преобразование без применения данных функций, то получите ошибку. Например, к ошибке приведёт следующий код:
str_a = ’50’ b = 10 c = str_a + b print (c)
Преобразование строки в целое число с помощью int() в Python
Давайте посмотрим на следующий участок кода:
str_a = '50' b = 10 c = int(str_a) + b print ("The value of c = ",c)
С его помощью мы выведем значение переменной «c», которое будет представлять собой сумму переменных «str_a» и «b».
Преобразуем десятичную строку в число с плавающей точкой в Python
Для преобразования строки в число с плавающей точкой мы можем использовать float:
#Преобразование string во float str_a = '50.85' b = 10.33 c = float(str_a) + b print ("The value of c = ",c)
Однако учтите, что если вы захотите задействовать тут функцию int(), это приведёт к ошибке.
Преобразуем список строковых чисел в список целых чисел в Python
Бывает, что в Python необходимо выполнить преобразование строки из чисел, содержащихся в списке. В таких случаях нам поможет генератор списков. Таким образом создаётся новый список, где можно использовать функцию int()в каждой итерации:
#Преобразование string в int в списке str_lst = ['1', '2', '3'] int_lst = [int(x) for x in str_lst] print (int_lst)
Мы выведем новый список, который будет состоять из целых чисел, полученных из строк.
Преобразуем список строк в список чисел с плавающей точкой в Python
#Преобразование string во float в списке str_lst = ['10. 505', '2.3', '3.99'] float_lst = [float(x) for x in str_lst] print (float_lst)
Преобразование строки с запятыми в число в Python
Что делать, если у нас строка наподобие «1,000,000»? Если мы попробуем выполнить её преобразование с помощью функций int() либо float(), мы получим ошибку.
Одно из решений — применение import locale:
locale.setlocale(locale.LC_ALL, ‘en_US.UTF-8’ )
Приём работает, но он не идеален. Другое решение — заменить запятые на пустые строки, а потом применить уже известную нам функцию int:
str_a = '5,123,000' int_b = int(str_a.replace(',','')) print ("The integer value",int_b)
Результат — целое значение. Это же решение мы можем использовать и для преобразования строки в число с плавающей точкой в Python.
Преобразование строки в число при расчёте високосного года в Python
Как известно, пользовательский ввод в «Пайтоне» воспринимается как строка. К примеру, в следующем коде программа попросит пользователя ввести год, а после ввода значений программа сообщит, является ли этот год високосным.
#Расчёт високосного года try: Y = int(input("Enter a Year? ")) exceptValueError: print ("You may only enter digits in '2000' format!") else: leap_or_not = Y%4 == 0 ifleap_or_not: print ("Leap year") else: print ("Not a leap year")
Таким образом происходит преобразование вводимой строки в целое число, а потом это число применяется для расчёта.
Как преобразовать целое число в строку в Python?
При выполнении преобразования целых чисел в строки используется функция str(). Она принимает объект, который может иметь тип int, float, double и так далее.
Давайте посмотрим на пример преобразования переменной int в строку, которая потом применяется как строка для конкатенации:
#Преобразование int в string a_string = "str function for int to string" a_num = 456 print (a_string + str(a_num))
Результат будет следующим:
str function for int to string456
Кстати, если бы целочисленная переменная была нами использована без str(), результатом стала бы ошибка TypeError.
Как преобразовать строку в число в Python
При написании кода нам довольно часто приходится переходить с одного типа данных на другой. Поэтому возможность конвертировать типы данных очень важна. Она дает нам большую гибкость при работе с информацией и в написании эффективно и корректно работающего кода.
В Python есть различные встроенные способы преобразования типов. Мы уже разбирали, как преобразовать строку в число с плавающей точкой. В этой статье мы остановимся на том, как преобразовать строку в целое число.
Итак, давайте начнем!
Типы данных в Python
Python поддерживает много типов данных. Они нужны для определения, представления и обработки различных видов данных, которые существуют и используются в компьютерных программах.
Кроме того, с разными типами данных нам доступны разные операции: то, что вы можете сделать с данными одного типа, невозможно сделать с другими. Например, в Python есть строковые методы, которые используются исключительно для работы со строками. К примеру, .lowercase()
и .uppercase()
для приведения символов строки в нижний и верхний регистр. И таких примеров очень много. Фактически, подавляющее большинство методов подходят только для какого-то одного типа данных.
Одним из типов данных Python являются строки. Строки – это последовательности символов, которые используются для передачи текстовой информации.
Строки заключаются в одинарные или двойные кавычки. К примеру, это может выглядеть следующим образом:
fave_phrase = "Hello world!" # Hello world! - это строка, заключенная в двойные кавычки
Инты или интеджеры (integers) – это целые числа. Они используются для представления числовых данных. Более того, при работе с целыми числами вы можете выполнять любые математические операции (например, сложение, вычитание, умножение или деление).
Кстати если вы ищете работу, то посмотрите свежие вакансии по Python
Целые числа не заключаются в одинарные или двойные кавычки. Они представляются просто в виде последовательности цифр:
fave_number = 7 # 7 имеет тип int, это целое число # "7" было бы не int, а string, несмотря на то, что это цифра # Все дело в кавычках
Преобразование типов данных
Бывает, данные хранятся или получаются от пользователя в неподходящем формате, т.е. тип этих данных не подходит для манипуляций, которые с ними нужно проделать.
Поскольку каждым типом данных можно управлять по-разному, это часто означает, что перед выполнением наших задач нам нужно преобразовать этот тип данных в более подходящий для конкретной задачи.
Преобразование одного типа данных в другой также называется приведением типа или преобразованием типа. Многие языки предлагают встроенные операторы приведения именно для этого – для явного преобразования одного типа в другой.
Давайте, наконец, посмотрим, как же это сделать.
Как преобразовать строку в число (int) в Python
Чтобы преобразовать строку в целое число, можно использовать встроенную функцию int()
.
Функция принимает в качестве параметра исходную строку, которую вы хотите преобразовать, и возвращает целочисленный эквивалент переданного вами значения.
Общий синтаксис выглядит примерно следующим образом: int("str")
.
Давайте рассмотрим следующий пример, где необходимое нам число представлено в виде строки:
# цифра 7 в строковом формате print("7") # проверяем тип данных при помощи метода type() print(type("7")) # Результат # 7 # <class 'str'>
Чтобы преобразовать строковую версию числа в целочисленный эквивалент, нам нужно воспользоваться функцией int()
. К примеру, это можно сделать следующим образом:
# конвертируем string в int print(int("7")) # проверяем тип данных при помощи метода type() print(type(int("7"))) # Результат #7 #<class 'int'>
Практический пример преобразования строки в целое число
Допустим, вам необходимо рассчитать возраст пользователя. Вы делаете это на основе полученной от него информации. Данный ввод всегда будет идти в строковом формате.
То есть, даже если пользователь вводит число, вы получите входящие данные строкового типа (<class 'str'>
).
Если вы захотите выполнить математические операции с этим инпутом, например вычесть введённое значение из другого числа, вы получите сообщение об ошибке, потому что выполнять математические операции со строками нельзя.
Давайте разберем пример, чтобы увидеть, как это происходит в действии:
current_year = 2021 # просим пользователя ввести его год рождения user_birth_year_input = input("What year were you born? ") # вычитаем текущий год из года, введенного пользователем user_age = current_year - user_birth_year_input print(user_age) # Результат # What year were you born? 1993 # Traceback (most recent call last): # File "demo. py", line 9, in <module> # user_age = current_year - user_birth_year_input # TypeError: unsupported operand type(s) for -: 'int' and 'str'
Итак, мы просим пользователя ввести его год рождения, чтобы на основе этой информации узнать его возраст (вычесть введенный год из 2021). В данном примере, для упрощения задачи, мы не учитываем месяц и дату рождения. Здесь главное понять принцип.
Однако запустив наш код, мы получаем ошибку. В ней сказано, что вычитание не может выполняться между целым числом int
и строкой.
Давайте проверим тип данных, введенных с помощью метода type()
:
current_year = 2021 # просим пользователя ввести его год рождения user_birth_year_input = input("What year were you born? ") print(type(user_birth_year_input)) # Результат # What year were you born? 1993 # <class 'str'>
Действительно, переменная user_birth_year_input
является строковой. Всё дело в том, что функция input()
, которую мы используем для получения данных от пользователя, всегда возвращает данные строкового типа. Это важно помнить и преобразовывать введенные данные в подходящий для вашей задачи тип.
В нашем примере, чтобы избежать ошибок, нужно преобразовать вводимые пользователем данные в целое число и сохранить его в новой переменной. Сделать это можно следующим образом:
current_year = 2021 # просим пользователя ввести его год рождения user_birth_year_input = input("What year were you born? ") # конвертируем пользовательский input в int при помощи функции int() и сохраняем в новой переменной user_birth_year = int(user_birth_year_input) # вычитаем текущий год из введенного пользователем года user_age = current_year - user_birth_year print(user_age) # Результат # What year were you born? 1993 # 28
Как видите, код отработал корректно, и мы получили возраст пользователя.
Важно отметить, что функция int()
выдаст вам ошибку, если исходная строка будет содержать какие-либо ещё символы помимо цифр. Например, если пользователь (по ошибке или специально) введет 19f8 в качестве года рождения, то вы получите ошибку. В таком случае важно прописывать так называемую «защиту от дурака». Это можно сделать с помощью конструкции try except
, подробнее про это можно почитать в статье «Обрабатываем исключения в Python: try и except».
Заключение
Вот и все – теперь вы знаете, как преобразовать строку в число в Python! Мы разобрали такой встроенный метод как int()
, как он работает и как его использовать для приведения строки к целому числу.
Спасибо за чтение! Надеемся, статья была вам полезна. Успехов в написании кода!
Перевод статьи «Python Convert String to Int – How to Cast a String in Python».
Преобразование строки в число (int, float) в Python
В Python вы можете преобразовать строку str
в целое число int
и число с плавающей запятой float
с помощью int()
и float ()
.
В этой статье описывается следующее содержимое.
- Преобразование строки в
int
:int()
- Преобразование строки в
float
:float()
- Преобразование строки двоичного, восьмеричного и шестнадцатеричного представления в
Интервал
- Преобразование строки экспоненциального представления в число
с плавающей запятой
Используйте str()
для преобразования целого числа или числа с плавающей запятой в строку.
- Встроенные функции — str() — Документация по Python 3.9.0
Если вы хотите преобразовать формат строк или чисел, используйте функцию format()
или метод format()
str
.
- Форматирование строк и чисел с помощью format() в Python
Вы также можете преобразовать список строк в список чисел.
- Преобразование списка строк и списка чисел друг в друга в Python
Преобразование строки в
int
: int()
int()
преобразует строку в целое число int
.
- Встроенные функции — int() — Документация по Python 3.9.0
печать (целое число ('100')) печать (тип (целое ('100'))) № 100 # <класс 'целое'>
источник: str_num_conversion.py
Строка, содержащая .
или ,
вызывает ошибку.
# print(int('1.23')) # ValueError: неверный литерал для int() с основанием 10: '1.23' # print(int('10,000')) # ValueError: недействительный литерал для int() с основанием 10: '10,000'
источник: str_num_conversion.py
Строку, разделенную запятыми, можно преобразовать, удалив ,
с помощью replace()
(замените пустой строкой ''
).
print(int('10 000'.replace(',', ''))) # 10000
источник: str_num_conversion.py
См. следующую статью для replace()
.
- Замена строк в Python (replace, translate, re.sub, re.subn)
Преобразование строки в
float
: float()
float()
преобразует строку в число с плавающей запятой float
.
- Встроенные функции — float() — Python 3.9.0 документация
печать (с плавающей запятой ('1,23')) печать (тип (с плавающей запятой ('1.23'))) # 1.23 # <класс 'плавающий'>
источник: str_num_conversion.py
Строка без целой части также может быть преобразована.
печать (с плавающей запятой ('.23')) # 0,23
источник: str_num_conversion.py
Строка, представляющая целое число, также преобразуется в число с плавающей запятой float
.
печать (с плавающей запятой ('100')) печать (тип (с плавающей запятой ('100'))) # 100.0 # <класс 'плавающий'>
источник: str_num_conversion.py
Преобразование строки двоичного, восьмеричного и шестнадцатеричного представления в
int
восьмеричное и шестнадцатеричное.
печать (целое число ('100', 2)) печать (целое ('100', 8)) печать (целое ('100', 16)) № 4 № 64 № 256
источник: str_num_conversion.py
Если опущено, считается десятичным, как и в предыдущих примерах.
печать (целое число ('100', 10)) печать (целое ('100')) № 100 № 100
Источник: str_num_conversion.py
Если основа равен 0
, она преобразуется на основе префикса строки ( 0b
, 0o
, 0x
или 0b
, 0o
, 0x или
00004,
0o
, 0.
).
печать (целое число ('0b100', 0)) печать (целое ('0o100', 0)) печать (целое ('0x100', 0)) № 4 № 64 № 256
источник: str_num_conversion.py
Префиксы и шестнадцатеричные алфавиты могут быть написаны как в верхнем, так и в нижнем регистре.
печать (целое число ('FF', 16)) печать (целое ('ff', 16)) № 255 № 255 печать (целое ('0xFF', 0)) печать (целое ('0XFF', 0)) печать (целое ('0xff', 0)) печать (целое ('0Xff', 0)) № 255 № 255 № 255 № 255
источник: str_num_conversion.py
Дополнительные сведения о взаимном преобразовании двоичных, восьмеричных и шестнадцатеричных строк и int
см. в следующей статье.
- Преобразование двоичных, восьмеричных, десятичных и шестнадцатеричных чисел в Python
Преобразовать строку экспоненциального представления в
float
Строку экспоненциального представления можно преобразовать в float
с помощью float()
.
печать (с плавающей запятой ('1.23e-4')) печать (тип (с плавающей запятой ('1.23e-4'))) # 0.000123 # <класс 'плавающий'> печать (с плавающей запятой ('1.23e4')) печать (тип (с плавающей запятой ('1.23e4'))) # 12300.0 # <класс 'плавающий'>
источник: str_num_conversion.py
Можно использовать как e
, так и E
.
печать (с плавающей запятой ('1.23E-4')) # 0.000123
источник: str_num_conversion.py
Преобразование строки в целое число в Python
Улучшить статью
Сохранить статью
- Уровень сложности: Easy
- Последнее обновление: 28 фев, 2023
Улучшить статью
Сохранить статью
В Python строки могут быть преобразованы в целые числа с помощью встроенной функции int() . Функция int() принимает любой тип данных Python и преобразует его в целое число. Но использование функции int() — не единственный способ сделать это. Этот тип преобразования также можно выполнить с помощью ключевого слова float() , поскольку значение с плавающей запятой можно использовать для вычисления с целыми числами. Ниже приведен список возможных способов преобразования целого числа в строку в Python:
1. Использование int() function
Syntax: int(string)
Example:
Python3
|
Output
<класс 'целое число'> 30
В качестве примечания: для преобразования в число с плавающей запятой мы можем использовать float() в Python
Python3
|
Output
<класс 'ул'> <класс 'плавающий'> 31.0
2. Использование функции float()
Сначала мы преобразуем число с плавающей запятой, а затем преобразуем его в целое число. Obviously the above method is better (directly convert to integer)
Syntax: float(string)
Example:
Python3
|
Вывод 3. converting python string to int using eval() function Output 4. converting python string to float using eval() function . 0248 5. Using ast.literal_eval Выход 6. Использование str.isdigit () 8 <класс 'ул'> 5. 0
Python3
a
=
"100"
print
(
eval
( а)
+
12
)
112
Python3
a
=
"100,00"
Печать
(
Eval
(A)
+
12
)
112.0
Python3
from
ast
import
literal_eval
int_value
=
literal_eval(
"1234"
)
печать
(int_value)
печать
(
тип
3) 0_04003 (0_int_value) 00013 1234
Python3
94444444444444444444444444444444444444444444444444444444444444444444444444444444444. Строка
=
"42"