Строки в Python
Срезы, разбор и склейка строк — то, что нужно почти в каждой задаче.
Строка: индексы и срезы
word = 'python'
word[0] # 'p'
word[-1] # 'n'
word[:3] # 'pyt'
word[::-1] # 'nohtyp' Строка индексируется как список: с нуля, минус — с конца, срезы те же. Изменить символ по индексу нельзя — строки неизменяемы, собирай новую.
Регистр и пробелы: upper, lower, strip
raw = ' Anna@Mail.RU '
raw.strip() # 'Anna@Mail.RU'
raw.strip().lower() # 'anna@mail.ru'
'python'.upper() # 'PYTHON' strip срезает пробелы и переносы по краям, lower/upper меняют регистр. Методы не трогают исходную строку — результат нужно сохранить в переменную.
split и join: строка ↔ список
line = 'python,sql,go'
parts = line.split(',') # ['python', 'sql', 'go']
text = ' / '.join(parts) # 'python / sql / go' split режет строку по разделителю и отдаёт список, join собирает список обратно в строку. Разделитель у join стоит слева: '-'.join(parts), а не parts.join('-').
replace: замена в строке
phone = '8-999-123-45-67'
phone.replace('-', ' ') # '8 999 123 45 67'
phone.replace('-', '', 2) # '8999123-45-67' replace(old, new) меняет все вхождения и возвращает новую строку; третий аргумент ограничивает число замен. Удалить символ — заменить его на пустую строку ''.
Поиск в строке: in, find, count
email = 'anna@mail.ru'
'@' in email # True
email.find('@') # 4
email.find('#') # -1
email.count('a') # 3 Просто проверить наличие — оператор in, нужна позиция — find, количество — count. find возвращает -1, а не ошибку, когда ничего не нашёл — не забудь это проверить.
Перебор строки по символам
word = 'koddo'
count = 0
for char in word:
if char in 'aeiou':
count += 1
print(count) # 2 for идёт по строке посимвольно — отдельный индекс не нужен. Паттерн «счётчик + условие в цикле» закрывает большинство задач на подсчёт символов.