В этом уроке вы научитесь создавать, форматировать, изменять и удалять строки в Python. Также вы познакомитесь с различными строковыми операциями и функциями.
Что такое строка в Python?
Строка в Python - это обычная последовательность символов (букв, цифр, знаков препинания).
Компьютеры не имеют дело с символами, они имеют дело с числами (в двоичной системе). Даже если вы видите символы на вашем экране, внутри памяти компьютера он хранится и обрабатываются как последовательность нулей и единиц.
Преобразование символа в число называется кодированием, а обратный процесс - декодированием. ASCII и Unicode - наиболее популярные из кодировок, которые используются для кодирования и декодирования данных.
В Python, строка - это последовательность символов Unicode. Юникод был введен для включения каждого символа на всех языках и обеспечения единообразия в кодировании.
Как создать строку в Python?
Строки можно создавать, заключая символы в одинарные или двойные кавычки. Даже тройные кавычки могут использоваться в Python, но они обычно используются для представления многострочных строк и строк документации (docsrting).
# Все способы ниже создают строку my_string = 'Hello' print(my_string) my_string = "Hello" print(my_string) my_string = '''Hello''' print(my_string) # Содержимое внутри тройных кавычек может переноситься на новые строки my_string = """Hello, Python""" print(my_string)
Как получить доступ к символам в строке?
Мы можем получить доступ к отдельным символам, используя индексирование, и диапазон символов, используя срезы. Индекс начинается с 0. Попытка получить доступ к символу вне диапазона индекса вызовет ошибку IndexError. Индекс должен быть целым числом. Мы не можем использовать float или другие типы, это приведет к ошибке TypeError.
Python допускает отрицательную индексацию для своих последовательностей.
Индекс -1 относится к последнему элементу, -2 - ко второму с конца элементу и т.д. Мы можем получить доступ к ряду элементов в строке, используя оператор среза (двоеточие).
str = 'programfiles' print('str = ', str) # Первый символ print('str[0] = ', str[0]) # Последний символ print('str[-1] = ', str[-1]) # Срез, символы со второго по пятый print('str[1:5] = ', str[1:5]) # Срез, символы с шестого по второй с конца print('str[5:-2] = ', str[5:-2])
Как изменить или удалить строку?
Строки относятся к неизменяемым типам данных (immutable type). Это означает, что элементы строки не могут быть изменены после того, как она была создана. Мы можем просто переназначить разные строки одному и тому же имени.
>>> my_string = 'programfiles' >>> my_string[5] = 'a' ... TypeError: 'str' object does not support item assignment >>> my_string = 'Python' >>> my_string ‘Python'
Мы не можем удалять символы из строки. Но полностью удалить строку можно с помощью ключевого слова del.
>>> del my_string[1] ... TypeError: 'str' object doesn't support item deletion >>> del my_string >>> my_string ... NameError: name 'my_string' is not defined
Операции со строками в Python
Есть много операций, которые могут быть выполнены со строкой, что делает ее одним из наиболее часто используемых типов данных в Python.
Конкатенация двух или более строк
Объединение двух или более строк в одну называется конкатенацией. В Python конкатенация выполняется оператором +.
Оператор * может использоваться для повторения строки в течение заданного числа раз.
str1 = 'Hello' str2 ='World!' # Конкатенация (объединение) строк print('str1 + str2 = ', str1 + str2) # Повторение строк print('str1 * 3 =', str1 * 3)
Перебор строк
Используя цикл for, мы можем перебирать строку.
Пример для подсчета количества символа 'l' в строке.
count = 0 for letter in 'Hello World': if(letter == 'l'): count += 1 print(count)
Проверка на наличие символа в строке
Мы можем проверить, существует ли подстрока в строке или нет, используя ключевое слово in.
>>> 'a' in 'programfiles' True >>> 'at' not in 'programfiles' False
Встроенные функции для работы со строками в Python
Различные встроенные функции, которые работают с последовательностью, работают также со строкой.
Некоторые из наиболее часто используемых - это enumerate() и len(). Функция enumerate() возвращает объект перечисления. Он содержит индекс и значение всех элементов в строке в виде пар.
Аналогично, len() возвращает длину (количество символов) строки.
str = 'program' # enumerate() list_enumerate = list(enumerate(str)) print('list(enumerate(str) = ', list_enumerate) # Подсчет кол-ва символов print('len(str) = ', len(str))
Форматирование строк в Python
Экранирование символов
Если внутри строки содержатся символы одинарной и двойной кавычки, то вне зависимости от того, какие кавычки мы использовали для создания строки - мы получим ошибку SyntaxError.
>>> print("She said, "What's there?"") ... SyntaxError: invalid syntax >>> print('She said, "What's there?"') ... SyntaxError: invalid syntax
Один из способов обойти эту проблему - использовать тройные кавычки. В качестве альтернативы мы можем использовать escape-последовательности или так называемое «экранирование символов».
Экранирующая последовательность начинается с обратной косой черты. Если мы используем одинарную кавычку для представления строки, все одинарные кавычки внутри строки должны быть экранированы. Аналогично обстоит дело с двойными кавычками. Вот как это можно сделать для представления приведенного выше текста.
# Тройные кавычки print('''He said, "What's there?"''') # Экранирование одинарных кавычек print('He said, "What\'s there?"') # Экранирование двойных кавычек print("He said, \"What's there?\"")
Использование метода format() для форматирования строк
Метод format(), доступный для строкового объекта, очень универсален и мощен в форматировании строк. Формат строки содержит фигурные скобки {} в качестве заполнителей или заменяющих полей, которые заменяются соответствующими значениями.
Мы можем использовать позиционные аргументы или ключевые аргументы, чтобы указать порядок.
# порядок по умолчанию default_order = "{}, {} and {}".format('John','Bill','Sean') print(default_order) # порядок задается вручную positional_order = "{1}, {0} and {2}".format('John','Bill','Sean') print(positional_order) # порядок задается аргументами keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean') print(keyword_order)
Метод format() может иметь необязательные спецификации формата. Они отделены от имени поля двоеточием. Например, мы можем выравнивать по левому краю <, выравнивать по правому краю > или центрировать ^ строку в заданном пространстве. Мы также можем отформатировать целые числа как двоичные, шестнадцатеричные и т.д., а числа с плавающей точкой могут быть округлены или отображены в формате экспоненты. Существует множество форматов, которые вы можете использовать. Более подробно про метод format() можно почитать в официальной документации к языку.
>>> # форматирование целых чисел >>> "Binary representation of {0} is {0:b}".format(12) 'Binary representation of 12 is 1100' >>> # форматирование чисел с плавающей запятой >>> "Exponent representation: {0:e}".format(1566.345) 'Exponent representation: 1.566345e+03' >>> # округление >>> "One third is: {0:.3f}".format(1/3) 'One third is: 0.333' >>> # выравнивание строки >>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham') '|butter | bread | ham|’
Другие методы для работы со строками в Python
В языке Пайтон имеется большое кол-во различных методов для работы со строками. Если рассматривать их все в этой статье, то она может увеличить раза в три, а то и больше. Подробное описание работы всех методов можно найти в официальной документации к языку на сайте https://python.org/
Оставить комментарий