Найти тему

Строки в Python и как с ними работать.

Оглавление

Строки (тип данных str) в Python представляют собой последовательности символов, заключённые в одинарные ('...'), двойные ("..."), тройные одинарные ('''...''') или тройные двойные кавычки ("""...""").

Строки в Python являются неизменяемыми (immutable), что означает, что после их создания нельзя изменить отдельные символы внутри строки.

Основные аспекты работы со строками в Python:

1. Создание строк

  • Строки можно создавать с использованием одинарных или двойных кавычек:
s1 = 'Привет, мир!'
s2 = "Hello, world!"
  • Тройные кавычки используются для создания многострочных строк:
s3 = '''Многострочная
строка'''

2. Экранирование символов

Для включения специальных символов, таких как новая строка (\n) или табуляция (\t), используется символ обратного слэша \:

s4 = "Строка с новой строкой\nи табуляцией\tвнутри."

Для включения в строку кавычек того же типа, что и у самой строки, также используется экранирование:

s5 = 'Это — строка с кавычкой: \''

3. Сырые (raw) строки

Если перед строкой поставить символ r или R, Python будет трактовать её как "сырую", и экранирование символов игнорируется:

s6 = r"Сырая строка: \n не переносит строку"

4. Индексация и срезы

Строки поддерживают доступ к отдельным символам по индексу:

s = "Python"
print(s[0]) # 'P'
print(s[-1]) # 'n' (отрицательные индексы отсчитываются с конца)

Срезы позволяют извлечь подстроку:

print(s[0:3]) # 'Pyt' (символы с 0 по 2 включительно)
print(s[:3]) # 'Pyt' (с начала до 3)
print(s[3:]) # 'hon' (с 3 и до конца)
print(s[::2]) # 'Pto' (каждый второй символ)

5. Операции со строками

  • Конкатенация: строки можно складывать:
s7 = "Hello" + " " + "World!" # 'Hello World!'
  • Повторение строки:
s8 = "ha" * 3 # 'hahaha'
  • Проверка вхождения:
'Py' in "Python" # True

6. Методы строк

Python предоставляет множество встроенных методов для работы со строками:

  • Преобразование регистра:
s = "Python"
print(s.upper()) # 'PYTHON'
print(s.lower()) # 'python'
  • Удаление пробелов:
s = " hello "
print(s.strip()) # 'hello' (убирает пробелы с обоих концов)
print(s.lstrip()) # 'hello ' (убирает только слева)
print(s.rstrip()) # ' hello' (убирает только справа)
  • Поиск и замена:
s = "Hello, world!"
print(s.find("world")) # 7 (индекс подстроки)
print(s.replace("world", "Python")) # 'Hello, Python!'
  • Разбиение и соединение:
s = "apple,banana,cherry"
print(s.split(",")) # ['apple', 'banana', 'cherry']
print(" ".join(['Hello', 'world'])) # 'Hello world'

7. Форматирование строк

Python предоставляет несколько возможностей форматирования строк:

  • Оператор %:
s = "Привет, %s!" % "Мир" # 'Привет, Мир!'
  • Метод .format():
s = "Привет, {}!".format("Мир") # 'Привет, Мир!'
  • f-строки (f-strings) — начиная с Python 3.6:
name = "Мир"
s = f"Привет, {name}!" # 'Привет, Мир!'

8. Изменяемость строк

Строки в Python неизменяемы, то есть после создания строки её нельзя изменить. Любые операции, которые "изменяют" строку, на самом деле создают новую строку:

s = "Hello"
s = s + " World" # создается новая строка 'Hello World', а переменной s присваивается ссылка на неё

9. Многострочные и длинные строки

Для длинных строк или многострочных значений можно использовать тройные кавычки:

long_text = """Это длинная строка,
которая может занимать несколько строк кода."""

10. Кодировка

В Python строки хранятся в кодировке Unicode, что позволяет работать с символами из разных языков и алфавитов:

s = "Привет, мир!"

Сравнение строк

Сравнение строк в Python происходит на основе лексикографического порядка, что означает сравнение символов строк по их Unicode-кодам. Этот порядок аналогичен алфавитному, но он может зависеть от регистра символов (заглавные и строчные буквы имеют разные коды в Unicode).

-2

Основные операторы для сравнения строк:

1. Оператор равенства (==): проверяет, равны ли строки.

2. Оператор неравенства (!=): проверяет, не равны ли строки.

3. Операторы больше (>) и меньше (<): сравнивают строки лексикографически.

4. Операторы больше или равно (>=) и меньше или равно (<=): также сравнивают строки по лексикографическому порядку с учётом равенства.

Примеры сравнения строк:

1. Сравнение на равенство и неравенство:

-3

2. Сравнение по лексикографическому порядку: Лексикографический порядок сравнивает строки как в словаре:

-4

3. Особенности сравнения с учётом регистра: В Unicode заглавные буквы имеют меньшие коды, чем строчные, поэтому строки с заглавными буквами будут считаться "меньшими" в лексикографическом порядке.

-5

Для сравнения строк без учёта регистра можно использовать метод .lower() или .upper():

print(s1.lower() == s2.lower()) # True, игнорируя регистр

4. Сравнение строк разной длины: Лексикографическое сравнение продолжается до тех пор, пока не будет найден первый различающийся символ. Если одна строка является префиксом другой, то более короткая строка будет "меньше":

-6

5. Сравнение строк с не-латинскими символами: Строки с символами из других алфавитов будут сравниваться по их Unicode-кодам:

s1 = 'асса' #русский
s2 = 'acca' #english
s3 = 'super' #english

print(s1>s2) #true, т.к. английские символы имеют меньшие коды чем русские
print(s1>s3) #true т.к. английские символы имеют меньшие коды чем русские
-7

Если Вам интересно, что еще можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?

Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Обязательно прочитайте: Что должен знать и уметь тестировщик

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам