Python. Средства преобразования строк и одиночных символов.

Средства преобразования строк и одиночных символов. Функции int(), str(), repr(), float(), ord(), chr()


Содержание


1. Функция int(). Преобразование в целое число

Функция int() есть конструктором класса int. Эта функция возвращает целочисленный объект, который может быть образован из:

  • целого числа или объекта;
  • числа или объекта с плавающей запятой;
  • строки символов или строчного объекта, содержащего последовательность цифр.

Функция может вызваться одним из двух способов:

  • int() – в этом случае функция возвращает значение 0;
  • int(x, base) – в этом случае обрабатывается объект x. Значение base определяет систему исчисления, в которую нужно конвертировать объект x. По умолчанию base = 10. Если явным образом задана система исчисления, то тип объекта x должен быть строчным, другие типы в этом случае запрещаются.

Пример.

# Функция int()
# 1. Вызов без параметров
a = int() # a = 0

# 2. Вызов с целочисленным значением
a = int(15) # a = 15

# 3. Вызов с числом с плавающей запятой
a = int(2.85) # a = 2

# 4. Вызов со строкой
s = '28'
a = int(s) # a = 28

# 5. Вызов с конвертированием в другую систему исчисления - только для строк

# конвертировать 155 из 16-й системы в десятичную
s = '155'
a = int(s, 16) # a = 341, значение 155 в 16-й системе

# конвертировать 111 из двоичной системы в десятичную
s = '111'
a = int(s, 2) # a = 7

# 6. Так нельзя
# a = int(111,2) - ошибка, нельзя конвертировать число, должна быть строка

 

2. Функция str(). Преобразование в строку

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

Функция имеет две реализации:

  • str() – без параметров. В этом случае функция возвращает пустую строку;
  • str(x) – с параметром x. Параметр x есть объектом некоторого типа. Данный вызов может также содержать еще два дополнительных параметра, которые определяют систему кодирования (по умолчанию система кодирования устанавливается utf-8) и схему обработки ошибок (по умолчанию установлена схема вызова исключения типа UnicodeError).

Результат функции str() может использоваться для вывода в функции print().

Пример.

# Функция str()
# 1. Вызов с целым числом
x = 25
s = str(x) # s = '25' - строка символов

# 2. Вызов с числом с плавающей запятой
y = 2.338
s = str(y) # s = '2.338'

# 3. Вызов со строкой
s = str("3.778") # s = '3.778'

# 4. Вызов со строкой, которая не отображает число
s = str("abcdef") # s = 'abcdef'

# 5. Вызов без параметров
s = str() # s = ''

 

3. Функция repr(). Преобразование в строку как литерал

Функция repr() реализует преобразование в строку таким образом, если бы эта строка была литералом в программном коде.
Функция repr() может быть применена к:

  • целым числам;
  • числам с плавающей запятой;
  • строкам символов.

Пример 1. Конвертировать целое число в строку, которая представлена литералом.

# Функция repr()

# конвертировать целое число в строку
number = 25
snumber = repr(number) # snumber = '25' - как строка символов

number = -100029
snumber = repr(number) # snumber = '-100029' - как строка символов

Пример 2. Конвертировать в строку число с плавающей запятой.

# Функция repr()
# конвертировать число с плавающей запятой в строку
number = 25.233
snumber = repr(number) # snumber = '25.233'

snumber = repr(-1e-2) # snumber = '-0.01'

Пример 3. Конвертировать строку символов в другую строку так если бы она была литералом.

# Функция repr()
# конвертировать строку в строку
s1 = 'Text string'
s2 = repr(s1) # s2 = "'Text string'"

s1 = "Text string"
s2 = repr(s1) # s2 = "'Text string'"

Пример 4. Конвертирование кортежа.

# Функция repr() - обработка кортежа
x = ( 2.85, 15, 'Hello')
str_x = repr(x) # str_x = "(2.85, 15, 'Hello')"


 

4. Какое отличие между функциями repr() и str()?

В языке Python функции repr() и str() преобразуют произвольные объекты в их строчное представление.

Разница между функциями проявляется в том, как они конвертируют строку.
Функция repr() возвращает представление строчного объекта в виде строки программного кода, которую можно выполнить чтобы воссоздать этот объект. Иными словами, функция repr() возвращает строку в виде строки. При использовании такого объекта в функции print() будут выведены ограничивающие строку кавычки (строка во вложенных кавычках).
В свою очередь, функция str() используется для конвертирования строки в строку без ее преобразования в предшествующую форму. При использовании результата функции str() в функции print() будет выведена обычная строка в одинарных кавычках.

Например.

# Функции repr() и str()
# конвертировать строку в строку
s1 = 'Text string'

# функция repr()
s2 = repr(s1) # s2 = "'Text string'"

# функция str()
s3 = str(s1) # s3 = 'Text string'

Как видно из вышеприведенного кода, функция repr() возвращает строку как литерал

"'Text string'"

а функция str() возвращает обычную строку

'Text string'

 

5. Функция float(). Преобразование в число с плавающей запятой

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

  • float() – без параметра. В этом случае возвращается значение 0.0;
  • float(x) – где параметр x задает число или строку, которую нужно конвертировать.

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

  • «Infinity» или «inf» – обозначают бесконечность. Бесконечность может быть отрицательной: «-Infinity» или «-inf»;
  • «nan» – обозначает неопределенность.

Пример.

# Функция float() - возвращает число с плавающей запятой
# 1. Результат получается из числа
a = 25 # целое число
x = float(a) # x = 25.0

b = 21.555e-2 # число с плавающей запятой
x = float(b) # x = 0.21555

# 2. Результат получается из строки
# s = 'abcdef' - ошибка, строка не имеет вида числа
# x = float(s)

# строка в экспоненциальном формате
s = '-1.23e-2'
x = float(s) # x = -0.0123

# строка в обычном формате
s = "288.75"
x = float(s) # x = 288.75 - как число

# использование в выражении
x = float(5.2)+float(3.8)*float(-2.1) # x = -2.7799999999999994

# использование со знаком +
x = float('+2.34') # x = 2.34

# использование со словом "Infinity" или "inf"
x = float("Infinity") # x = inf
x = float('-inf') # x = -inf - с отрицательным знаком

# использование со словом "nan"
x = float("nan") # x = nan

x = float() # x = 0.0

 

6. Функции ord() и chr(). Преобразование кодов символов

Функции ord() и chr() используются для одиночных символов. Эти функции являются инверсными друг к другу.
Функция chr() позволяет получать символ на основе его кода. Функция ord() позволяет получить код на основе представления символа.

Общая форма вызова функции chr() следующая

c = chr(i)

где c – символьное представление символа с Unicode-кодом i.

Общая форма вызова функции ord()

i = ord(c)

где i – код символа c.

Пример.

# Функции chr() и ord()
# 1. Функция chr()
code = 49 # код в десятичной системе исчисления
symbol = chr(code) # symbol = '1' - цифра '1'

code = 100
symbol = chr(code) # symbol = 'd'

code = 7785
symbol = chr(code) # symbol = 'ṩ' - кодирование Unicode

# 2. Функция ord
symbol = '5'
code = ord(symbol) # code = 53

symbol = 'ṩ'
code = ord(symbol) # code = 7785

symbol = ' ' # символ пробел
code = ord(symbol) # code = 32

 

7. Можно ли в Python сложить строку с числом?

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

Пример.

# Сложить строку с числом не получится
s = '25' # это строка
a = 30 # это число

# Случай 1. Сложить (суммировать) два числа
# Предварительно нужно конвертировать строку в число
b = int(s)
res = a + b
print('As numbers: a + s = ', res)

# Случай 2. Сложить две строки
# Предварительно нужно конвертировать число в строку
res_str = str(a) + s
print('As strings: a + s = ', res_str)

Результат выполнения программы

As numbers: a + s = 55
As strings: a + s = 3025

 


Связанные темы