Автор оригинала: 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()
имеют свои ограничения и могут вызывать исключения, если входная строка отформатирована не совсем так, как они ожидают.