Содержание

Изучаем Python: преобразование строки в число

Иногда требуется преобразовать строку в целое число или в число с плавающей точкой для осуществления определённых операций в Python.

Если вы попробуете выполнить то или иное действие со строкой в виде чисел, то получите ошибку.

Этот код приведёт к ошибке:

str_a = ’50’
b = 10
c = str_a + b
print (c)

В Python можно использовать функции int и float для преобразования строки в целое число или число с плавающей точкой до осуществления каких-либо операций.

  • Использование функции int() для преобразования строки в целое число
  • Преобразование десятичной строки в число с плавающей точкой
  • Преобразование списка строковых чисел в список целых чисел
  • Преобразование списка строк в список чисел с плавающей точкой
  • Пример преобразования строки с запятыми в число
  • Преобразование строки в число для расчёта високосного года -пример
  • Как преобразовать целое число в строку?

Рассмотрим следующий код:

str_a = '50'
b = 10
c = int(str_a) + b
print ("The value of c = ",c)  

В результате его работы выведется значение переменной c, представляющее собой сумму переменных str_a и b.

Можно использовать класс float для того чтобы осуществить преобразование строки в число с плавающей точкой.

Пример использования float для преобразования строки:

#Пример преобразования string во float
str_a = '50.85'
b = 10.33
c = float(str_a) + b
print ("The value of c = ",c) 

Замечание: если вы попытаетесь использовать здесь функцию int(), то получите ошибку.

Если нужно преобразовать строки из чисел, содержащиеся в списке, тогда используйте генератора списков.

Будет создан новый список, в котором можно применить функцию int в каждой итерации.

Код:

#Пример преобразования string в int в списке
str_lst = ['1', '2', '3']
int_lst = [int(x) for x in str_lst]
print (int_lst)

Будет выведен новый список, состоящий из целых чисел, полученных из строк.

Аналогичным образом можно использовать float вместо int для преобразования списка, содержащего строки из целых чисел. Рассмотрим пример:

Код для преобразования элементов списка в числа с плавающей точкой:

#Пример преобразования string во float в списке
str_lst = ['10. 505', '2.3', '3.99']
float_lst = [float(x) for x in str_lst]
print (float_lst)

Ну а как насчёт строки наподобие “5,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- программах воспринимается как строка. В следующем примере пользователя просят ввести год. После ввода значения программа сообщает, високосный это год или нет.

Для этого введённое значение сначала преобразуется в целое число, а затем используется формула расчёта високосного года.

#Пример расчёта високосного года
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(). Функция 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.

Пожалуйста, опубликуйте свои мнения по текущей теме статьи. Мы очень благодарим вас за ваши комментарии, отклики, дизлайки, подписки, лайки!

Сергей Бензенкоавтор-переводчик статьи «5 examples to Convert a Python string to int and float»

Преобразование строки в число в Python.

Python не позволит сложить строку и число, даже если строка выглядит как число, то есть содержит только цифры:

>>> '50' + 1
# TypeError: cannot concatenate ‘str’ and ‘int’ objects

В архитектуре языка оператор '+' может означать как операцию сложения, так и операцию конкатенации, вследствие чего выбор типа преобразования становится неочевидным. Поэтому интерпретатор воспринимает такую инструкцию как ошибочную. В этом случае нужно использовать инструменты преобразования, чтобы можно было интерпретировать строку как число или наоборот.

  • Преобразование строки в тип int;
  • Преобразование строки в тип float;
  • Преобразование списка строк в список чисел.

Преобразование строки в тип

int.

Дополнительно смотрите описание функции int()

# преобразование строки в число
>>> num = '50'
>>> if num.isdigit():
...     int('50')
# 50
>>> float('1.
5') # 1.5 # преобразование числа в строку >>> str(50) # '50'

Функции int и float преобразует строку в число, функция str преобразует число в строковое представление. В Python нельзя смешивать строковые и числовые типы в таких операторах, как '+', но можно вручную выполнить необходимые преобразования перед выполнением.

Преобразование строки в тип

float.

Дополнительно смотрите описание функции float()

>>> x = '50'
>>> y = 1
>>> z = '1.5'
# Операция сложения
>>> int(x) + y + float(z)
# 52.5
# Операция конкатенации
>>> x + str(y) + z
# '5011.5'
# Преобразование строки с записью вещественного
# числа в число с плавающей точкой
>>> text = '5.79E-10'
>>> float(text)
# 5.79e-10

Преобразование списка строк в список чисел.

Для преобразования списка строк с числами в список целых чисел можно ввести проверку перед преобразованием на то, что строка состоит только из десятичных чисел str. isdigit().

>>> str_list = ['8.3', '11', 'девять', '1', '5', '3', '9', 
... 'пять', '15', '13', '7', '13.9', 'число']
>>> num_list = []
>>> for i in str_list:
...     if i.isdigit():
...         num_list.append(int(i))
>>> num_list.sort()
>>> num_list
# [1, 3, 5, 7, 9, 11, 13, 15]

Для преобразования списка строк с числами включая десятичные c разделением их по типам, необходимо перед преобразованием в тип float проверять строку на вхождение точки '.'.

>>> str_list = ['8.3', '11', 'девять.', '1', '5', '3', '9', 
... '.пять', '15', '13', '7', '13.9', 'число']
>>> def str_to_num(str):
...     if '.' in str and str.replace('.', '').isdigit():
...         return float(str)
...     elif str.isdigit():
...         return int(str)
... 
>>> num_list = []
>>> for i in str_list:
...     n = str_to_num(i)
...     if n is not None:
...         num_list.append(str_to_num(i))
>>> num_list
# [8.
3, 11, 1, 5, 3, 9, 15, 13, 7, 13.9]

Для преобразования всех чисел в тип float, можно просто заменять точку в строке с числом и проверять получившуюся строку на десятичное число.

>>> str_list = ['8.3', '11', 'девять.', '1', '5', '3', '9', 
... '.пять', '15', '13', '7', '13.9', 'число']
>>> def is_num(str):
...     if str.replace('.', '').isdigit():
...         return True
... 
>>> num_list = []
>>> for i in str_list:
...     if is_num(i):
...         num_list.append(float(i))
... 
>>> num_list.sort()
>>> num_list
# [1.0, 3.0, 5.0, 7.0, 8.3, 9.0, 11.0, 13.0, 13.9, 15.0]

Преобразование строк в числа и чисел в строки в Python

Введение

Python позволяет взаимозаменяемо преобразовывать строки, целые числа и числа с плавающей запятой несколькими различными способами. Самый простой способ сделать это — использовать базовые функции str() , int() и float() . Помимо этого, есть еще несколько способов.

Прежде чем мы перейдем к преобразованию строк в числа и преобразованию чисел в строки, давайте сначала посмотрим, как строки и числа представлены в Python.

Примечание . Для простоты запуска и демонстрации этих примеров мы будем использовать интерпретатор Python.

Строки

Строковые литералы в Python объявляются путем заключения символа в двойные («) или одинарные кавычки (‘). Строки в Python на самом деле представляют собой просто массивы с Unicode для каждого символа в качестве элемента массива, что позволяет вам использовать индексы для доступа к одному символу из строки

Например, мы можем получить доступ к отдельным символам этих строк, указав индекс:

 >>> stringFirst = "Привет, мир!"
>>> stringSecond = 'Снова!'
>>> строкаFirst[3]
'л'
>>> строкаВторая[3]
'я'
 

Числа

Число в Python может быть целым числом

, числом с плавающей запятой или комплексом .

Целые числа могут быть положительными или отрицательными целыми числами. Начиная с Python 3 целые числа не ограничены и могут содержать практически любое число. До Python 3 верхняя граница была 2 31 -1 для 32-разрядных сред выполнения и 2 63 -1 для 64-разрядных сред выполнения.

Число с плавающей запятой также имеет неограниченную длину, но число с плавающей запятой должно содержать десятичную точку .

Комплексные числа должны иметь мнимую часть, которая обозначается с помощью j :

 >>> integerFirst = 23
>>> floatFirst = 23,23
>>> комплексtFirst = 1 + 23j
 

Преобразование строк в числа

Использование функции
int()

Если вы хотите преобразовать строку в целое число, проще всего будет использовать int() функция. Просто передайте строку в качестве аргумента:

 >>> x = "23"
>>> у = "20"
>>> z = int(x) - int(y)
>>> г
3
 

Это работает, как и ожидалось, когда вы передаете строковое представление целого числа в int() , но вы столкнетесь с проблемой, если передаваемая вами строка не содержит целочисленного значения. Если в вашей строке есть какие-либо нечисловые символы, то int() вызовет исключение:

 >>> x = "23a"
>>> г = интервал (х)
Traceback (последний последний вызов):
  Файл "", строка 1, в 
ValueError: неверный литерал для int() с основанием 10: '23a'
 

Это же исключение будет вызвано даже в том случае, если будет передана допустимая строка с плавающей запятой:

 >>> x = "23.4"
>>> г = интервал (х)
Traceback (последний последний вызов):
  Файл "", строка 1, в 
ValueError: неверный литерал для int() с основанием 10: '23,4'
 

Функция int() имеет еще одну полезную функцию, помимо простого преобразования строк в целые числа, она также позволяет преобразовывать числа из любого основания в целое число с основанием 10. Например, мы можем преобразовать следующую двоичную строку в целое число с основанием 10, используя база параметр:

 >>> int('1101100', base=2)
108
 

То же самое можно сделать для любого другого основания, например шестнадцатеричного (основание 16):

 >>> int('6C', base=16)
108
 
Использование функции
float()

Преобразование строковых литералов в числа с плавающей запятой выполняется с помощью функции float() :

 >>> x = "23. 23"
>>> г = "23.00"
>>> z = число с плавающей запятой (х) - число с плавающей запятой (у)
>>> г
0,23000000000000043
 

Обратите внимание, что результирующее значение не совсем точное, так как должно быть просто 0,23 . Это связано с проблемами математики с плавающей запятой, а не с преобразованием строки в число.

Функция float() предлагает немного большую гибкость, чем функция int() , поскольку она может анализировать и преобразовывать как целые числа с плавающей запятой , так и :

 >>> x = "23"
>>> у = "20"
>>> z = число с плавающей запятой (х) - число с плавающей запятой (у)
>>> г
3.0
 

В отличие от int() , float() не вызывает исключение, когда получает числовое значение, отличное от числа с плавающей запятой.

Однако вызовет исключение , если ему будет передано нечисловое значение:

 >>> x = "23a"
>>> г = число с плавающей запятой (х)
Traceback (последний последний вызов):
  Файл "", строка 1, в 
ValueError: не удалось преобразовать строку в число с плавающей запятой: «23a»
 

В то время как float() имеет ли , а не возможность преобразовывать неосновные 10 числа, такие как int() делает, it делает имеет возможность преобразовывать числа, представленные в экспоненциальной нотации (также известной как электронная нотация):

 >>> float('23e-5')
0,00023
>>> с плавающей запятой('23e2')
2300,0
 
Использование функции
complex()

Преобразование строковых литералов в комплексные числа выполняется с помощью функции complex() . Для этого строка должна иметь определенное форматирование. В частности, он должен быть отформатирован без пробелов вокруг + или - операторы:

 >>> x = "5+3j"
>>> у = "3+1j"
>>> z = комплекс(х) + комплекс(у)
>>> г
(8+4к)
 

Дополнительные пробелы между операторами + или - приведут к возникновению исключения:

 >>> z = complex("5+ 3j")
Traceback (последний последний вызов):
  Файл "", строка 1, в 
ValueError: аргумент complex() является неверно сформированной строкой
 

Как 9Функция 0005 float() , complex() также более расслаблена в допускаемых типах чисел. Например, мнимая часть числа может быть полностью опущена, а также могут быть проанализированы как целые числа, так и числа с плавающей запятой:

 >>> complex("1")
(1+0j)
>>> сложный("1.2")
(1,2+0к)
 

Однако, как видите, это не следует использовать в качестве более гибкой замены int / float , поскольку оно автоматически добавляет мнимую часть числа к строковой версии.

Преобразование числовых значений в строки

Использование функции
str()

Функцию str() можно использовать для преобразования любого числового типа в строку.

Функция str() доступна в Python 3.0+, поскольку строки в Python 3.0+ по умолчанию имеют кодировку Unicode. Однако это неверно для версий Python ниже 3.0, в которых для достижения той же цели используется функция unicode() :

 >>> str(23) # Integer to String
'23'
>>> str(23.3) # Плавающая в строку
«23,3»
>>> str(5+4j) # Из комплекса в строку
'(5+4j)'
 

Преимущество str() заключается в том, что он может обрабатывать преобразование любого типа числа в строку, поэтому вам не нужно беспокоиться о выборе правильного метода в зависимости от того, какой тип числа вы конвертируете.

Использование функции
format()

Другим способом преобразования числовых значений в строки является использование функции format() , которая позволяет вам устанавливать заполнители внутри строки, а затем преобразовывать другой тип данных в строку и заполнять заполнители.

Чтобы использовать функцию, просто напишите строку, за которой следует .format() и передайте аргументы для заполнителей.

Вот пример:

 >>> "Мой возраст {}".format(21)
«Мне 21 год»
 

К аргументам в функции .format() также можно обращаться по отдельности, используя их позиции или имена переменных:

 >>> "Вы получаете {продукт}, когда умножаете {1} на {0}". формат(5,5, 3, произведение=16,5)
«Вы получите 16,5, если умножите 3 на 5,5».
 

Обратите внимание, что под капотом функция .format() просто использует str() для преобразования аргументов в строки. По сути, это тот же способ преобразования чисел в строки, что и в предыдущем разделе, но .format() действует как удобная функция для форматирования строки.

Заключение

Python позволяет взаимозаменяемо преобразовывать строки, целые числа и числа с плавающей запятой несколькими различными способами. Самый простой способ сделать это — использовать основные str() , int() и float() функций. Помимо этого, есть еще несколько способов, таких как функция format() . Просто имейте в виду, что функции int() , float() и complex() имеют свои ограничения и могут вызывать исключения, если входная строка не отформатирована точно так, как они ожидают.

Python Convert String to Int (Integer)

С помощью функции int() вы можете преобразовать строку в int (целое число) в Python. Помимо int() есть и другие методы конвертации. Преобразование строки в целое число — обычная задача в Python, которая часто необходима при работе с пользовательским вводом, чтении данных из файла или взаимодействии с базой данных. Есть несколько способов сделать это, и важно понимать различные методы и потенциальное использование каждого метода.

Учебники по Python Pandas для начинающих…

Включите JavaScript

Учебники по Python Pandas для начинающих

Краткие примеры преобразования строк в Int

Эти краткие примеры включают различные подходы, чтобы дать вам общее представление о том, как преобразовать строку в int. Мы обсудим это подробнее.

# Использование функции int()
стрОбж = "123"
результат = интервал (strObj)
# Использование функции float()
стрОбж = "123,45"
float_num = плавающий (strObj)
результат = целое (число_плавающего числа)
# Использование bit_length()
стрОбж = "10010101"
результат = интервал (strObj, 2)
# Использование PyNumber_Long()
импорт системы
стрОбж = "1234567890"
результат = интервал (sys.intern (strObj))
 

1. Преобразование строки Python в тип Int с помощью int()

Для преобразования строки в тип int (целое число) используйте функцию int() . Эта функция принимает первый аргумент как тип String и второй базовый аргумент. Вы можете передать строку в качестве первого аргумента и указать основание числа, если оно не в базе 10. Функция int() также может обрабатывать отрицательные целые числа, распознавая отрицательный знак в строке.

# Преобразовать строку в целое число
стрОбж = "987 дюймов
результат = интервал (strObj)
печать (результат)
#Выход:
#987
# Преобразование str с отрицательным значением в int
стрОбж = "-654"
результат = интервал (strObj)
печать (результат)
#Выход:
#-654
 

Если строка не является допустимым целочисленным значением в указанной системе счисления, она вызовет ошибку ValueError . Вы можете использовать блок try-except, чтобы обработать эту ошибку и обеспечить бесперебойную работу вашего кода. Функция int() не может преобразовать число с плавающей запятой, представленное в виде строки, в целое число.

# Преобразование строки с не-целым
пытаться:
    стрОбж = "123,45"
    результат = интервал (strObj)
кроме ValueError:
    print("Строка не является целым числом.")
#Выход:
#String не является целым числом.
 

2. Использование базового параметра int()

Вы можете использовать базовый параметр для указания базы от 2 до 36 включительно. Например, можно использовать параметр base для преобразования строки, представляющей восьмеричное число с основанием 8, в целое число

.
# Использовать базу 2 (двоичную) при преобразовании
стрОбж = "10010101"
результат = интервал (strObj, 2)
печать (результат)
#Выход:
#149# Основание 8 (восьмеричное) при преобразовании
стрОбж = "765"
результат = интервал (strObj, 8)
печать (результат)
 
#Выход:
#501
# База 36 (буквенно-цифровая)
strObj = "zzzzz"
результат = интервал (strObj, 36)
печать (результат)
 
# Выход:
#60466175
 

3.

Преобразование строки в целое путем проверки цифры

В приведенных выше примерах мы видели, что если произойдет что-то плохое, мы увидим значение valueError . Вы можете использовать метод isdigit() в сочетании с функцией int() , чтобы безопасно преобразовать строку в целое число, не встречая Исключение ValueError .

# Проверяем, является ли строка цифрой перед преобразованием
def str_to_int (strObj: str) -> int:
    если strObj.isdigit():
        вернуть целое (strObj)
    еще:
        вернуть 0
стрОбж = "89"
результат = str_to_int (strObj)
печать (результат)
#Выход:
#89
strObj = "xyz"
результат = str_to_int (strObj)
печать (результат)
  
#Выход:
#0
 

4. Преобразование строки с плавающей запятой в целое

Иногда вам может потребоваться преобразовать строку со значением с плавающей запятой в целое (целое) в Python. Функция float() может использоваться для преобразования строки в число с плавающей запятой и передачи результата в int() для преобразования числа с плавающей запятой в целое число. В результате функция int() удалит из строки все десятичные знаки в конце.

Вот пример использования функций float() и int() для преобразования строки в целое число:

# Преобразование str с числом с плавающей запятой в целое число
стрОбж = "12,56"
результат = интервал (с плавающей запятой (strObj))
печать (результат)
 
#Выход:
#12
стрОбж = "23.000"
результат = интервал (с плавающей запятой (strObj))
печать (результат)
  
#Выход:
# 23
 

5. Обработка недопустимых входных данных

Когда функция int() используется для преобразования строки в целое число, она выдает ошибку ValueError , если строка не является допустимым целым числом. Это может произойти, если строка пуста, содержит нечисловые символы или содержит начальные или конечные пробелы.

Вы могли видеть это и в других примерах. Чтобы обработать эту ошибку, вы можете использовать оператор try и , кроме , как показано ниже.

# Обработка неверного примера ввода
# С допустимым целым числом
стрОбж = "53"
пытаться:
    результат = интервал (strObj)
кроме ValueError:
    результат = 0
печать (результат)
#Выход:
#53
# С недопустимым целым числом
стрОбж = "абв"
пытаться:
    результат = интервал (strObj)
кроме ValueError:
    результат = 0
печать (результат)
#Выход:
#0
 

6. Рекомендации по преобразованию строки в целое число в Python

Следующие методы строк можно использовать, чтобы убедиться, что строка готова к преобразованию в целое число в Python. К ним относятся удаление начальных и конечных пробелов с помощью strip() метод строки. Он также включает удаление любых нечисловых символов с помощью метода строки replace() и извлечение числовой части строки с помощью регулярных выражений.

6.1 Устранение пробелов с помощью strip()

Этот метод может быть особенно полезен, если строка, которую вы пытаетесь преобразовать, содержит начальные или конечные пробелы, что может привести к тому, что функция int() вызовет исключение ValueError , когда она передается недопустимый аргумент.

Ниже приведен пример использования метода strip() для удаления начальных и конечных пробелов из строки перед попыткой преобразовать ее в целое число.

# Удалить пробелы
стрОбж = "67"
stripped_string = strObj.strip()
результат = int (stripped_string)
печать (результат)
#Выход:
#67
 

6.2 Удаление нечисловых символов с помощью замены

Чтобы удалить нечисловые символы из строки, вы можете использовать метод replace() , который является встроенным методом 0005 str класс в Python. Метод replace() удалит символы, указанные в аргументе старой строки.

# Удалить нечисловые символы
strObj = "345xyz"
очищенная_строка = strObj.replace("x", "").replace("y", "").replace("z", "")
результат = int (очищенная_строка)
печать (результат)
#Выход:
#345
 

Чтобы сделать его более обобщенным, мы можем использовать строковый модуль в python. Вот пример, который показывает вам, как это сделать.

  • Создайте строку из всех букв алфавита, используя string. ascii_lowercase и string.ascii_uppercase .
  • Используйте translate() с maketrans() , чтобы удалить все буквенные символы из строки .
  • Преобразование очищенной_строки в целое число с помощью int() .
строка импорта
strObj = "abc345xyz"
алфавит = strObj.ascii_lowercase + strObj.ascii_uppercase
очищенная_строка = strObj.translate(strObj.maketrans("", "", алфавит))
результат = int (очищенная_строка)
печать (результат)
#Выход:
#345
 

Модуль re включает множество функций и методов, которые можно использовать для поиска, замены и разделения строк с помощью регулярных выражений. Чтобы извлечь числовую часть строки с помощью регулярных выражений, вы можете использовать модуль re , который является встроенным модулем Python, обеспечивающим поддержку регулярных выражений.

 #Извлечь числовую часть строки
импортировать повторно
стрОбж = "123abc456"
match = re.