Строки в Python

Строки в Python

В этом уроке вы научитесь создавать, форматировать, изменять и удалять строки в 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/

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*