Основы работы со строками
Строки в Python представлены типом str
(от англ. string – строка) и представляют собой упорядоченные последовательности символов, заключённые в кавычки. Строки используются для хранения и обработки текстовой информации. Будь то имена, адреса, тексты книг или любые другие данные, которые можно представить в виде текста, в Python они обрабатываются как строки.
Для создания строковой переменной достаточно заключить любой текст в одинарные '
или в двойные "
кавычки:
message = 'Что на ужин?'
reply_message = "" # Пустая строка – тоже строка
Длинные строки
Если строка очень длинная, то её можно разбить на части с помощью тройных кавычек:
recipe = """Ингредиенты:
1–2 столовые ложки растительного масла или кусочек сливочного;
1 или несколько яиц;
соль — по вкусу."""
Но при выводе такой строки на экран в ней сохраняются все символы, включая переносы строк:
Ингредиенты:
1–2 столовые ложки растительного масла или кусочек сливочного;
1 или несколько яиц;
соль — по вкусу.
Поэтому удобнее разбить длинную строку на несколько частей и заключить их в круглые скобки:
info = ("Тест Тьюринга — эмпирический тест, идея которого была "
"предложена Аланом Тьюрингом в статье «Вычислительные машины "
"и разум», опубликованной в 1950 году в философском журнале Mind. "
"Тьюринг задался целью определить, может ли машина мыслить.")
Python автоматически объединит эти части в одну строку и в полученной строке переносов строк не будет:
Тест Тьюринга — эмпирический тест, идея которого была предложена Аланом Тьюрингомв статье «Вычислительные машины и разум», опубликованной в 1950 году в философском журнале Mind.Тьюринг задался целью определить, может ли машина мыслить.
Обратите внимание, что запятые между строками в скобках ставить не нужно, иначе будет создан кортеж, а не строка.
Преобразование в строку
Функция str()
является встроенной функцией Python, которая используется для преобразования любого объекта в его строковое представление.
Функция | str(obj) |
Описание | Возвращает строку, полученную из объекта obj |
Параметры | obj – объект, строку из которого требуется получить |
Возвращаемое значение | Строка |
Например, преобразуем в строку целое число:
number = 21
number = str(number)
print(str_number )
# Вывод: 21
При выводе это может быть не так очевидно, но переменная number
хранит строку, а не число, в чём позволяет убедиться функция type()
:
print(type(number))
# Вывод: <class 'str'>
Также в функцию str()
можно передать арифметическое выражение:
print(str(30 + 1))
# Вывод: 31
Тогда в строку преобразуется результат этого выражения.
Базовые операции со строками
Python предоставляет несколько базовых операций для работы со строками: конкатенацию (сложение) и повторение (умножение).
Конкатенация (сложение) строк
Операция конкатенации используется для объединения двух или более строк в одну новую строку. В Python для конкатенации строк используется оператор сложения +
.
fist_name = "Бильбо"
last_name = "Бэггинс"
print(fist_name + " " + last_name)
# Вывод: Бильбо Бэггинс
Конкатенация возможно только между двумя строками. Попытка сложить строку с числом без предварительного преобразования числа в строку приведет к ошибке TypeError.
fruit = "Яблоки: "
amount = 3
print(fruit + amount)
# Вывод: TypeError: can only concatenate str (not "int") to str
Чтобы избежать ошибки, необходимо преобразовать число в строку с помощью функции str()
:
print(fruit + str(amount))
# Вывод: Яблоки: 3
Повторение (умножение) строк
Оператор умножения *
при работе со строками выполняет операцию повторения. Он позволяет создать новую строку, которая является результатом многократного повторения исходной строки. Левый операнд должен быть строкой, а правый – целым числом, указывающим, сколько раз необходимо повторить строку:
print("Кар-кар" * 3)
# Вывод: Кар-карКар-карКар-кар
Попытка умножить строку на дробное число приведёт к ошибке TypeError:
print("Кар-кар" * 3.0)
# Вывод: TypeError: can't multiply sequence by non-int of type 'float'
Форматирование строк
Форматирование строк – это процесс создания новых строк путем вставки в них значений переменных или результатов выражений в определенном формате. Python предлагает несколько способов форматирования строк.
Например, мы можем использовать уже знакомую нам конкатенацию строк:
first_name = "Энакин"
last_name = "Скайуокер"
age = 26
print("Меня зовут " + first_name + " " + last_name + ". Мне " + str(age) + " лет.")
# Вывод: Меня зовут Энакин Скайуокер. Мне 26 лет.
Однако чем больше в такой строке переменных, тем сложнее такая строка становится для чтения. Также необходимо следить за тем, чтобы все элементы были строками, при необходимости используя функцию str()
.
Одним из самых удобных и современных способов встраивания выражений в строку является использование f-строк (форматированных строковых литералов). Для того, чтобы создать f-строку, достаточно поставить префикс f
перед открывающей кавычкой строки, а любые переменные или выражения Python заключить в фигурные скобки:
print(f"Меня зовут {first_name} {last_name}. Мне {age} лет.")
# Вывод: Меня зовут Энакин Скайуокер. Мне 26 лет.
Одним из преимуществ f-строк является то, что вам не нужно вручную преобразовывать типы данных в строки – Python сделает это автоматически внутри фигурных скобок.
Также внутри фигурных скобок в f-строках можно использовать любые допустимые выражения Python, включая арифметические операции и вызовы функций:
n = 2
power = 8
print(f"{n} в степени {power} равняется {n ** power}")
# Вывод: 2 в степени 8 равняется 256
F-строки также поддерживают спецификаторы формата, которые позволяют контролировать, как именно будет отображаться значение внутри строки. Спецификатор формата следует после двоеточия внутри фигурных скобок.
Например, для дробного числа можно указать количество знаков после запятой:
pi = 3.1415926535
print(f"Число Пи приблизительно равно {pi:.2f}")
# Вывод: Число Пи приблизительно равно 3.14
:.2f
– это спецификатор формата.
:
– указывает на начало спецификатора.2
– задает желаемое количество знаков после десятичной точки (в данном случае2
)f
– указывает, что число должно быть отформатировано как число с плавающей точкой (англ. – fixed-point notation).
Кроме того, f-строки обычно работают быстрее, чем конкатенация с использованием оператора +
.
1. Чем отличаются длинные строки, созданные с помощью тройных кавычек от строки, разделённой с помощью скобок?
2. Исправьте ошибку в данном коде:
price = 17
str_price = str(price)
print(price + " долларов")
3. Создайте строку "УраУраУраУраУраУраУра"
из строки "Ура"
с помощью оператора умножения:
4. Что будет выведено на экран в результате выполнения данного кода?
number1 = 3
number2 = 5
print(f"Сумма чисел {number1} и {number2} равна {number1 + number2}")
5. Используйте спецификаторы формата и выведите на экран число Эйлера e = "2.7182818284"
с тремя знаками после точки: