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
Связанные темы
- Строки. Общие понятия. Объявление строки. Операции над строками. Примеры
- Экранированные последовательности. Неформатированные строки. Многострочные блоки текста
- Доступ по индексам. Срезы. Получение фрагмента строки. Примеры
Преобразование строки в число в Python
Преобразование данных одного типа в другой является обычной задачей в программировании. В Python типы данных можно легко преобразовать друг в друга.
Алексей Кодов
Автор статьи
7 июля 2023 в 17:34
Преобразование данных одного типа в другой является обычной задачей в программировании. В Python типы данных можно легко преобразовать друг в друга. Это облегчает обработку данных и помогает избежать ошибок. В этой статье рассмотрим, как преобразовать строку в число (целое или дробное).
Преобразование строки в целое число
В Python для преобразования строки в целое число используется встроенная функция int() . Она принимает на вход строку и возвращает целое число. Если строка не может быть преобразована в целое число, Python выдаст ошибку ValueError .
число = int("123") print(число) # Выведет: 123
Преобразование строки в число с плавающей точкой
Если нужно преобразовать строку в число с плавающей точкой (дробное число), используется функция float() . Она работает аналогично функции int() , но возвращает число с плавающей точкой.
дробное = float("123.45") print(дробное) # Выведет: 123.45
Нужно быть аккуратным с преобразованием строк в числа, так как если строка содержит символы, которые не могут быть интерпретированы как число (например, буквы), Python выдаст ошибку. Поэтому перед преобразованием строки в число рекомендуется убедиться, что это возможно.
Для проверки, можно ли строку преобразовать в число, можно использовать метод isdigit() для проверки целых чисел и немного более сложную проверку для чисел с плавающей точкой:
строка = "123" print(строка.isdigit()) # Выведет: True строка_с_плавающей_точкой = "123.45" try: float(строка_с_плавающей_точкой) print(True) except ValueError: print(False) # Если строка не может быть преобразована во float, выведет False
Понимание, как преобразовывать строки в числа, является важным навыком при работе с данными в Python.
Функции print() и input(). Преобразование строк в числа int() и float()
О функции print() мы с вами уже немного говорили, и вы видели ее использование в самых простых ситуациях, например:
print(1)
print(3, 5, 7)
выведет указанные значения через пробел. Также можно выводить отдельные переменные:
a = -6.84 print(a)
результаты арифметических операций:
print(a * 2 + 3)
или функций:
print(abs(a * 2 + 3))
- sep – разделитель между данными;
- end – завершающий символ или строка.
a = -6.84 b = 7 c = 25.6 print(a, b, c)
Как видите, между ними автоматически добавляется пробел. Но этот символ можно поменять через параметр sep, например, так:
print(a, b, c, sep=" | ")
Соответственно, чтобы параметр sep «сработал», необходимо хотя бы два аргумента в функции print(). Если указать, например, один:
print(a, sep=" | ")
то здесь разделять нечего и он будет проигнорирован. А вот для двух переменных уже появится вертикальная черта:
print(a, b, sep=" | ")
Второй параметр end задает окончание строки вывода и по умолчанию: end = ‘\n’ переводу на следующую строку. Это такой спецсимвол, о которых мы также еще будем говорить. Так вот, благодаря такому параметру end два последовательных вызова функции print() напечатают текст с новой строки:
print("Hello") print("World!")
Но если в первой функции print() добавить этот параметр с пробелом:
print("Hello", end=' ') print("World!")
то увидим в одной строчке оба слова. Разумеется, здесь параметр end с пробелом применяется только к первому print(). У второго он уже берется по умолчанию с переносом строки. Последнее, что я хочу рассказать о функции print() – это способ вывода форматированной информации в консоль. Давайте предположим, что у нас имеются две переменные (координаты точки) x и y:
x = 5.76 y = -8
И мы хотим вывести их в формате: «Координаты точки: x = 5.76; y = -8» Сделать это можно несколькими способами. Первый, самый очевидный, записать все через запятую:
print("Координаты точки: x = ", x, "; y = ", y)
Но, начиная с версии Python 3.6, появилась возможность использовать специальные F-строки. О них мы также еще будем говорить, но здесь я приведу простой пример и вы уже сейчас сможете применять этот механизм в своих программах. Запишем функцию print(), следующим образом:
print(f"Координаты точки: x = ; y = ")
Смотрите, здесь перед строкой ставится специальный символ f, указывающий, что это будет F-строка. А, в самой строчке внутри фигурных скобок мы можем записывать любые конструкции языка Python. В данном случае, я просто указал переменные x и y. Видите, как это просто, наглядно и удобно. Сейчас практически всегда используются F-строки для форматированного вывода информации.
Функция input()
Вторая функция input() служит для ввода информации, как правило, с клавиатуры. В самом простом варианте ее можно вызвать так:
a = input()
При этом переменная a будет ссылаться на строку:
print(type(a))
И это важный момент: функция input() всегда возвращает строку. На что это может повлиять? Например, мы хотим вычислить модуль введенного числа:
a = input() b = abs(a)
При вызове функции abs() возникнет ошибка, так как в качестве ее аргумента должно быть число, а не строка. Как решить эту проблему? Очень просто. Если мы знаем, что пользователь должен ввести число, предположим, целое число, то можно воспользоваться функцией:
a = "54" b = int(a)
Теперь b будет ссылаться на число 54, а не строку. И наша программа примет вид:
a = input() a = int(a) b = abs(a) print(b)
Здесь первые две строчки можно объединить и записать их так:
a = int(input())
Но функция int() преобразовывает только целые числа. Если в строке будет хотя бы один не цифровой символ:
int("64.56")
возникнет ошибка. То есть, в нашей программе пользователь обязательно должен вводить целые числа. А как тогда преобразовывать вещественные значения? Для этого есть другая функция:
float("64.56")
Поэтому, когда на входе ожидаются вещественные данные, то следует использовать именно ее:
a = float(input()) b = abs(a) print(b)
Давайте напишем программу для вычисления периметра прямоугольника. Пользователь будет вводить два числа (стороны прямоугольника), а мы, затем, вычислим периметр:
a = float(input()) b = float(input()) print("Периметр:", 2 * (a + b))
Как видите, все достаточно просто. Мы вводим первое число, нажимаем Enter и вводим второе число. Вводить два числа через пробел здесь нельзя, иначе получится строка с двумя числами, разделенные пробелом и ее нельзя будет преобразовать функциями int() и float(). Также в этой программе пользователю совершенно непонятно, что нужно вводить. Давайте добавим подсказки. Для этого в функции input() первым аргументом передается строка:
a = float(input("Введите длину прямоугольника: ")) b = float(input("Введите ширину прямоугольника: ")) print("Периметр:", 2 * (a + b))
Теперь стало гораздо понятнее, что нужно вводить. Забегая вперед отмечу, что в Python можно выстроить конструкцию для ввода значений через пробел. Это делается так:
a, b = map(float, input("Введите две стороны прямоугольника: ").split())
Здесь к каждому введенному значению применяется функция float() для преобразования в вещественные числа. Пока просто запомните эту конструкцию, в дальнейшем она станет понятной, когда мы изучим строки и функцию map(). Или, для ввода целых чисел, она будет принимать вид:
a, b, c = map(int, input("Введите три целых числа: ").split()) print("Периметр треугольника:", a + b + c)
Класс str() в Python, преобразует объект в строку
Класс str() выполнит преобразование и вернет строковую версию объекта. Если объект не указан, класс str() возвращает пустую строку. В противном случае поведение str() зависит от того, задано ли кодировка encoding или значение errors обработчика ошибок.
Если ни кодировка encoding , ни errors обработчик ошибок не заданы, str() вернет object.__str__() , что является «неформальным» или красиво печатаемым строковым представлением объекта. Если объект не имеет метода __str__() , то класс str() будет пытаться получить «формальное» представление repr() . Для строковых объектов функция str() вернет саму строку, переданную в качестве аргумента
Если задан хотя бы один из аргументов encoding или errors , то object должен быть байтоподобным, например bytes или bytearray . В этом случае str(bytes, encoding, errors) эквивалентен вызову bytes.decode(encoding, errors) .
Аргументы encoding и errors :
- encoding — это имя кодировки, используемой для декодирования или кодирования строкового представления объекта.
- error является необязательным и указывает как должны обрабатываться ошибки кодирования и декодирования.
Доступные стандартные обработчики ошибок:- ‘strict’ — бросает исключение ValueError , если есть ошибка кодирования. Используется в качестве значения по умолчанию.
- ‘ignore’ — игнорирует ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.
- ‘replace’ — вставляет символ ? на место непрочитанных символов, ввиду их отсутствия в используемой кодировке.
- ‘surrogateescape’ — любые некорректные байты будут представлены как символы Юникода в диапазоне от U+DC80 до U+DCFF . Эти символы, при обратной операции кодирования будут возвращаться в те же байты. Полезно для обработки файлов в неизвестной кодировке.
- ‘xmlcharrefreplace’ — поддерживается только при записи в файл. Символы, не поддерживаемые кодировкой, заменяются соответствующей ссылкой на символ XML.
- ‘backslashreplace’ — заменяет искаженные данные на escape-последовательности Python с обратной косой чертой.
- ‘namereplace’ — поддерживается только при записи, заменяет не поддерживаемые символы на \N <. >escape-последовательности.
Класс str() имеет дополнительные методы, реализующих различные операции с текстовыми строками.
Примеры преобразования объектов в строку.
Приведение типов к строке
>>> x = 10 >>> str(x) # '10' >>> x = 3.5 >>> str(x) # '3.5' >>> lst = list(range(5)) str(lst) # '[0, 1, 2, 3, 4]'
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора