Обработка символьных строк
Строки в Python: индексация, срезы, методы find, replace, upper, lower, split, join. Иммутабельность строк. Решение задач ОГЭ на обработку строк.
Обработка символьных строк
Определение
Строка — упорядоченная последовательность символов. В Python строки представлены типом str и являются неизменяемыми (immutable). Это значит, что после создания строку нельзя изменить — любая операция «изменения» создаёт новую строку.
Строки создаются в кавычках:
s1 = 'Привет'
s2 = "Мир"
s3 = '''Многострочная
строка'''
Пример
Индексация и срезы
s = "Информатика"
print(s[0]) # 'И' — первый символ
print(s[-1]) # 'а' — последний символ
print(s[2:7]) # 'форма' — срез с 2 по 6
print(s[:4]) # 'Инфо' — с начала до 3
print(s[5:]) # 'матика' — с 5 до конца
print(s[::2]) # 'Ифраиа' — каждый второй
Основные методы строк
s = " Python Programming "
# Преобразование регистра
print(s.upper()) # ' PYTHON PROGRAMMING '
print(s.lower()) # ' python programming '
print(s.title()) # ' Python Programming '
# Поиск
print(s.find("Pro")) # 9 — индекс первого вхождения
print(s.find("Java")) # -1 — не найдено
print(s.count("m")) # 2 — количество вхождений
# Замена
print(s.replace("Python", "Java")) # ' Java Programming '
# Удаление пробелов
print(s.strip()) # 'Python Programming'
# Разделение и соединение
words = "яблоко,груша,банан".split(",")
print(words) # ['яблоко', 'груша', 'банан']
print(" - ".join(words)) # 'яблоко - груша - банан'
Проверка символов
s = "Python3"
print(s.isalpha()) # False — есть цифра
print(s.isdigit()) # False — есть буквы
print("123".isdigit()) # True
print("abc".isalpha()) # True
Обозначения
| Операция | Синтаксис | Пример | Результат |
|---|---|---|---|
| Длина строки | len(s) | len("Привет") | 6 |
| Доступ по индексу | s[i] | "Привет"[1] | 'р' |
| Срез | s[i:j] | "Привет"[1:4] | 'рив' |
| Поиск подстроки | s.find(p) | "Привет".find("ив") | 2 |
| Замена | s.replace(a,b) | "abba".replace("b","c") | 'acca' |
| Верхний регистр | s.upper() | "abc".upper() | 'ABC' |
| Нижний регистр | s.lower() | "ABC".lower() | 'abc' |
| Разделение | s.split(sep) | "a,b,c".split(",") | ['a','b','c'] |
| Соединение | sep.join(list) | ",".join(["a","b"]) | 'a,b' |
| Удаление пробелов | s.strip() | " a ".strip() | 'a' |
Школьный алгоритмический язык: подсчёт букв «а» в строке
алг ПодсчётБукв (лит s)
арг s
рез цел
нач
цел i, count
count := 0
нц для i от 1 до длин(s)
если s[i] = "а" то
count := count + 1
все
кц
знач := count
кон
Важно!
- Строки неизменяемы.
s[0] = 'A'вызовет ошибкуTypeError. Нужно создавать новую строку. s.find(p)возвращает-1, если подстрока не найдена. Не путайте сs.index(p), который вызывает ошибку.- Срез
s[i:j]включает символ с индексом i, но не включает символ с индексом j. - Отрицательные индексы работают как в массивах:
s[-1]— последний символ. split()без аргумента делит по пробельным символам (пробел, табуляция, перевод строки).join()— метод строки, а не списка. Вызывается на разделителе:", ".join(items).- При сравнении строк учитывается регистр:
"Python" != "python". Используйте.lower()для сравнения без учёта регистра. - В задачах ОГЭ внимательно считайте индексы:
s[1:4]— это символы с 1 по 3 (всего 3 символа).
Примеры вопросов из тренажёра
-
Q: Дан фрагмент: s = "информатика". Чему равен s[2]?
A: верный ответ — ф
Объяснение: Индексация с 0: s[0]='и', s[1]='н', s[2]='ф'.
-
Q: Что вернёт выражение "Python".find("th")?
A: верный ответ — 1
Объяснение: 'P'(0) 'y'(1) 't'(2) 'h'(3) 'o'(4) 'n'(5). 'th' начинается на индексе 1.
-
Q: Что выведет программа? s = "барабан" print(s.replace("а", "о"))
A: верный ответ — боробон
Объяснение: replace('а','о') заменяет все 'а' на 'о': б(а)роб(а)н → боробон.
-
Q: Что выведет программа? s = "a,b,c,d" parts = s.split(",") print(len(parts))
A: верный ответ — 4
Объяснение: split(',') делит строку на 4 части: ['a','b','c','d']. len = 4.
-
Q: Какая операция вызовет ошибку?
A: верный ответ — s = "abc"; s[0] = 'd'
Объяснение: Строки неизменяемы. s[0] = 'd' вызовет TypeError.