Рубрики
Без рубрики

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

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

Автор оригинала: Guest Contributor.

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

Вступление

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

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

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

Строки

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

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

>>> stringFirst = "Hello World!"
>>> stringSecond = 'Again!'
>>> stringFirst[3]
'l'
>>> stringSecond[3]
'i'

Цифры

Число в Python может быть integer , float или complex .

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

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

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

>>> integerFirst = 23
>>> floatFirst = 23.23
>>> complextFirst = 1 + 23j

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

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

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

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

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

>>> x = "23a"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23a'

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

>>> x = "23.4"
>>> z = int(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: '23.4'

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

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

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

>>> int('6C', base=16)
108

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

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

>>> x = "23.23"
>>> y = "23.00"
>>> z = float(x) - float(y)
>>> z
0.23000000000000043

Обратите внимание, что полученное значение не совсем точно, как и должно быть 0.23 . Это связано с проблемами floating point math , а не с преобразованием строки в число.

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

>>> x = "23"
>>> y = "20"
>>> z = float(x) - float(y)
>>> z
3.0

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

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

>>> x = "23a"
>>> z = float(x)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: could not convert string to float: '23a'

В то время как float() does not have the ability to convert non-base 10 numbers like int() does, it does have the ability to convert numbers represented in scientific notation (aka e-notation):

>>> float('23e-5')
0.00023
>>> float('23e2')
2300.0

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

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

>>> x = "5+3j"
>>> y = "3+1j"
>>> z = complex(x) + complex(y)
>>> z
(8+4j)

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

>>> z = complex("5+ 3j")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: complex() arg is a malformed string

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

>>> complex("1")
(1+0j)
>>> complex("1.2")
(1.2+0j)

Однако, как вы можете видеть, это не следует использовать в качестве более гибкой замены для 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) # Float to String
'23.3'
>>> str(5+4j) # Complex to String
'(5+4j)'

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

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

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

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

Вот пример:

>>> "My age is {}".format(21)
'My age is 21'

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

>>> "You get {product} when you multiply {1} with {0}".format(5.5, 3, product=16.5)
'You get 16.5 when you multiply 3 with 5.5'

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

Вывод

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