Строки. Функции и методы строк | Python 3

Для работы со строками в Python 3 доступно множество мощных функций и методов. Функция len()
, например, возвращает длину строки, а метод upper()
преобразует строку в верхний регистр. Знание этих инструментов существенно упрощает обработку и манипуляции с текстовыми данными.
Метод lower()
позволяет преобразовать все символы строки в нижний регистр. Важно понимать, как использовать эти методы для эффективного решения задач. Пример: если вы хотите найти все вхождения подстроки в строке, используйте метод count()
.
Метод find()
ищет заданную подстроку и возвращает индекс её первого вхождения. Если подстроки нет, возвращает -1. Также полезен метод replace()
для замены подстрок в строке.
Например, чтобы получить подстроку, начиная с определённой позиции, используйте срезы. Срезы строк – очень мощный инструмент, с помощью которого можно извлекать части исходной строки. Используйте метод split()
для разделения строки по разделителю (по умолчанию пробел). Запомните эти базовые функции и методы, чтобы эффективно манипулировать строками в Python 3.
Строки. Функции и методы строк в Python 3
Для работы со строками в Python 3 доступно множество встроенных функций и методов. Они позволяют выполнять различные операции: преобразование к верхнему/нижнему регистру, поиск подстрок, форматирование и многое другое.
Функции:
len() возвращает длину строки.
Пример: len("Привет") == 6
str() преобразует объект в строковый тип.
Пример: str(123) == "123"
max() и min() находят максимальный и минимальный символ в строке (в лексикографическом порядке).
Пример: max("abc") == "c"
, min("zyx") == "x"
Методы строк:
upper() и lower() преобразуют строку к верхнему и нижнему регистру соответственно.
Пример: "hello".upper() == "HELLO"
, "WORLD".lower() == "world"
replace() заменяет все вхождения одной подстроки на другую.
Пример: "apple apple".replace("apple", "banana") == "banana banana"
split() разбивает строку на список подстрок по указанному разделителю (по умолчанию пробел).
Пример: "apple,banana,orange".split(",") == ['apple', 'banana', 'orange']
strip() удаляет пробелы с начала и конца строки.
Пример: " hello ".strip() == "hello"
find() находит первое вхождение подстроки, возвращает индекс, или -1 если подстрока не найдена.
Пример: "hello world".find("world") == 6
,"hello world".find("xyz") == -1
count() считает количество вхождений подстроки в строке.
Пример: "hello hello".count("hello") == 2
Создание и работа с литералами строк
Для создания строковых литералов в Python используются одинарные ('...') или двойные ("...") кавычки.
Примеры:
- 'Привет, мир!'
- "Это строка"
- 'Это строка с апострофом: "пример"'
- "Строка с двойной кавычкой: 'пример'"
- """Многострочная
строка.
Можно использовать для
документации."""
Обратите внимание на использование тройных кавычек для многострочных строк. Внутри строковых литералов возможно использование специальных символов, например:
- (новая строка)
- \t (табуляция)
- \\ (обратная косая черта)
- \' (одинарная кавычка внутри строки, если строка в одинарных кавычках)
- \" (двойная кавычка внутри строки, если строка в двойных кавычках)
Примеры использования:
Извлечение подстроки:
строка = "Привет, мир!"
подстрока = строка[7:] # Получаем "мир!"Конкатенация строк:
строка1 = "Привет"
строка2 = "мир"
объединенная_строка = строка1 + ", " + строка2 + "!"
# Результат: "Привет, мир!"Длина строки:
строка = "Python"
длина = len(строка) # длина = 6
Важно помнить о допустимых символах и способах их использования для создания корректных строковых литералов.
Индексация и срезы строк
Для доступа к отдельным символам в строке используется индексация. Первый символ имеет индекс 0, второй – 1, и так далее.
Пример:
строка = "Привет мир!"
print(строка[0]) # Выведет "П"
print(строка[7]) # Выведет "м"
Обратите внимание на отрицательные индексы. Они позволяют доступа к символам, начиная с конца строки.
Пример:
print(строка[-1]) # Выведет "!"
print(строка[-5]) # Выведет "р"
Срезы позволяют получить подстроку. Синтаксис: строка[начало:конец:шаг]
.
Пример:
print(строка[0:6]) # Выведет "Привет" (до, но не включая символ с индексом 6)
print(строка[7:]) # Выведет "мир!" (с индекса 7 до конца)
print(строка[::2]) # Выведет "Пвт мр" (каждый второй символ)
print(строка[::-1]) # Выведет "!рим евиртП" (строка в обратном порядке)
Рекомендация: Используйте срезы для удобного выделения фрагментов строк. Не забудьте о вариативности использования отрицательных индексов для эффективного доступа к подстрокам.
Методы строк для преобразования и работы с данными
Для преобразования и работы со строками в Python 3 доступен богатый набор методов. Ниже представлены наиболее полезные из них.
Метод | Описание | Пример | Результат |
---|---|---|---|
strip() |
Удаляет пробелы (с обеих сторон) | " строка ".strip() |
"строка" |
lstrip() |
Удаляет пробелы слева | " строка".lstrip() |
"строка" |
rstrip() |
Удаляет пробелы справа | "строка ".rstrip() |
"строка" |
lower() |
Преобразует строку в нижний регистр | "СТРОКА".lower() |
"строка" |
upper() |
Преобразует строку в верхний регистр | "строка".upper() |
"СТРОКА" |
replace(old, new) |
Заменяет вхождение old на new | "строка строка".replace("строка", "текст") |
"текст текст" |
split(sep) |
Разбивает строку по разделителю | "слово1,слово2,слово3".split(",") |
['слово1', 'слово2', 'слово3'] |
isdigit() |
Проверяет, состоит ли строка только из цифр | "123".isdigit() |
True |
isalpha() |
Проверяет, состоит ли строка только из букв | "abc".isalpha() |
True |
find(substring) |
Возвращает индекс первого вхождения подстроки | "строка".find("ка") |
2 |
Используйте эти методы для эффективной работы со строковыми данными в программах Python 3.
Методы строк для поиска и обработки подстрок
Для поиска и обработки подстрок в строковых переменных Python используйте следующие методы:
find()
и rfind()
находят первое вхождение подстроки слева (find()
) или справа (rfind()
). Важно: возвращает индекс подстроки, или -1, если не найдено.
Пример:
text = "Привет мир, мир!"
result = text.find("мир") # 7
result2 = text.rfind("мир") # 11
print(result) # Выведет 7
print(result2) # Выведет 11
index()
и rindex()
работают аналогично find()
и rfind()
, но генерируют исключение ValueError
, если подстрока не найдена.
Пример альтернативы:
text = "Привет мир, мир!"
try:
result = text.index("нет такой")
except ValueError:
print("Подстроки не найдено")
count()
считает количество вхождений подстроки.
Пример:
text = "Привет мир, мир!"
count = text.count("мир") # 2
print(count) # Выведет 2
startswith()
и endswith()
проверяют, начинается ли строка или заканчивается ли она указанной подстрокой.
Пример:
text = "Привет мир"
is_starts_with_privet = text.startswith("Привет") # True
is_ends_with_mir = text.endswith("мир") # True
print(is_starts_with_privet) # True
print(is_ends_with_mir) # True
replace()
заменяет все вхождения одной подстроки на другую.
Пример:
text = "Привет мир, мир!"
new_text = text.replace("мир", "вселенная")
print(new_text) # Привет вселенная, вселенная!
Использование регулярных выражений для работы со строками
Для поиска и обработки текста с определёнными шаблонами в Python используйте регулярные выражения (regex). Библиотека re
предоставляет мощные инструменты для этой задачи.
Пример 1: Поиск email-адресов.
- Шаблон:
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
Найдёт адреса, состоящие из локальной части, символа "@" и доменной части с расширением.
import re text = "Мой email: test@example.com и ещё user+test@sub.co.uk" matches = re.findall(r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", text)
Пример 2: Валидация телефонных номеров.
- Шаблон:
^\+?[1-9][0-9]{9,12}$
Проверяет, соответствует ли строка шаблону телефонного номера (с или без +).
import re phone_numbers = ["+79991234567", "1234567890", "123 "] for number in phone_numbers: if re.match(r"^\+?[1-9][0-9]{9,12}$", number): print(f"Номер {number} корректный") else: print(f"Номер {number} некорректный")
Пример 3: Замена части строки.
- Используйте
re.sub()
для замены всех вхождений шаблона.
import re text = "Купить 10 кг яблок и 5 кг груш" new_text = re.sub(r"(\d+)\s+кг", r"\1 \(кг\)", text)
В этих примерах re.findall()
находит все совпадения, re.match()
проверяет начало строки, а re.sub()
производит замену.
Регулярные выражения – мощный инструмент для обработки текста. Ознакомьтесь с документацией Python для получения дополнительной информации и расширенных возможностей.
Практические примеры использования строк
Для создания уникальных идентификаторов используйте hash-функции. Например, для строки "Мой текст":
import hashlib
строка = "Мой текст"
хэш = hashlib.sha256(строка.encode()).hexdigest()
print(хэш)
Этот код генерирует уникальный хэш. Применяйте такие методы для защиты паролей и идентификации файлов.
Работа с датой и временем. Преобразуйте строку в дату, например:
from datetime import datetime
строка_дата = "2024-10-27"
дата = datetime.strptime(строка_дата, "%Y-%m-%d")
print(дата)
Получите строку из объекта даты:
print(дата.strftime("%d.%m.%Y"))
Обработка текстовых данных. Найдите все вхождения определённого слова:
текст = "Это пример текстовой строки. Это пример."
слово = "пример"
находки = [i for i in range(len(текст)) if текст[i:i + len(слово)] == слово]
print(находки)
Это пример поиска всех позиций слова "пример". Используйте методы find(), rfind() в зависимости от нужной позиции.
Или для разделения строки по разделителю:
строка = "Один;Два;Три"
разделитель = ";"
фрагменты = строка.split(разделитель)
print(фрагменты)
Форматирование строк. Форматируйте строку эффективно:
имя = "Иван"
возраст = 30
форматированная_строка = f"Привет, {имя}! Вам {возраст} лет."
print(форматированная_строка)