Строки в 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) меняет все вхождения и возвращает новую строку; третий аргумент ограничивает число замен. Удалить символ — заменить его на пустую строку ''.

Перебор строки по символам

word = 'koddo'
count = 0
for char in word:
    if char in 'aeiou':
        count += 1
print(count)   # 2

for идёт по строке посимвольно — отдельный индекс не нужен. Паттерн «счётчик + условие в цикле» закрывает большинство задач на подсчёт символов.

Что дальше