
Шаг 3. Работа со строчками
Баллов за прохождение: 2
Сложение строк
На прошлом уроке мы уже столкнулись с конкатенацией. Так называется сложение двух строк:
print('I love ' + 'Python')
Это всё является одним аргументом. Мы можем конкатенировать и при этом передавать несколько аргументов:
print('Hello ' + 'World.', 'My name is ' + 'John')
В этом случае было передано 2 аргумента. В каждом аргументе происходит конкатенация двух строк. Это довольно простая тема.
Форматирование строк
Представлен следующий код:
name = 'John'
age = 25
height = 183.45
print('My name is', name, 'My age is', age, 'My height is', height)
Функция print() выглядит некрасиво. Много кавычек и запятых. Также у нас нет возможности форматировать строчку как нам угодно, например после каждого предложения подставить точку. В этом случае нам может помочь форматирование строк при помощь инструкции f:
name = 'John'
age = 25
height = 183.45
print(f'My name is {name}. My age is {age}. My height is {height}')
Вот теперь код выглядит куда круче!
Кавычки открываются только один раз. Перед открытием кавычек была поставлена буква f, что означает format, т.е форматирование. После этого в строчке появляется возможность подставлять переменные в фигурных скобках.
F-строчки (f-string) были введены в Python версии 3.6. Это самый удобный и современный способ форматирования строк. Они позволяют включать выражения прямо в строчку, используя фигурные скобки {}.
Пример других выражений:
print(f"Результат: {2*37}")
value = 'Строчка'
print(f"Вы ввели: {value.lower()}")
Старые методы форматирования
Старые - не значит плохие :)
Метод .format()
f-строчки раньше выглядели следующим образом:
print("My name is {fname}, I'm {age}".format(fname='John', age=36))
Метод .format() также используется в Python для форматирования строк. Он позволяет вставлять определенные значения в строку-заполнитель, которая определяется с помощью фигурных скобок {}. Метод .format() возвращает отформатированную строку.
Более сложные вариации использования этого метода мы рассмотрим позже.
Оператор %
Форматирование строк с помощью оператора % в Python позволяет вставлять определенные значения в строку-заполнитель, которая также определяется с помощью фигурных скобок {}. Этот способ форматирования был взаимствован из функции printf языка С (олдфаги поймут).
Пример использования:
print('Hello, %s!' % 'John')
# Вывод: Hello, John!
Если требуется несколько аргументов, то значеним будет являться кортеж со строками подстановки:
print('%d %s, %d %s') % (1, 2, 3, 4))
Также есть и более усложнённые варианты использования этого оператора с которыми вы тоже познакомитесь в процессе обучения.
Сейчас не стоит засорять голову и досконально разбираться в этих методах. Они представлены для общего ознакомления и начитанности кода.
Управляющие последовательности
print('Янв\nФев\nМар\nАпр\nМай\nИюн\nИюл\nАвг\nСен\nОкт\nНоя\nДек')
В коде выше вы можете заметить новые возможности форматирования строк. Здесь был указан символ \n (обратный слэш и английская n). Все, что делают эти два символа - это помещают символ перехода на новые строку в соответствующей позиции.
Применение символа \ (Обратный слэш) - позволяет помещать специальные символы в строку. Существует много так называемых "управляющих (или escape-) последовательностей".
Среди них большое значение имеет управляющая последовательность для экранирования одинарных (') или двойных кавычек ("). Допустим, у вас есть строчка:
print("Я "понимаю" Джона") # Ошибка!
В таком случае Python запутался, так как кавычка перед словом "понимаю заканчивает строку. В таком случае нужен способ сообщить Python, что кавычка не закрывающая:
print("Я \"понимаю\" Джона") # Правильно!
Это список всех управляющих последовательностей, которые поддерживаются языком Python, опробуйте их у себя, чтобы понять, как они работают. Вам вряд ли понадобятся многие из них, но запомните код и представление.:
Управляющая последовательность | Представление |
---|---|
\\ | Обратный слеш (\) |
\' | Одиночная кавычка (') |
\" | Двойная кавычка (") |
\a | ASCII-символ звонка (BEL) |
\b | ASCII-символ возврата (BS) |
\f | ASCII-символ перевода страницы (FF) |
\n | ASCII-символ новой строки (LF) |
\N{имя} | Символ с именем из базы данных Юникод |
\r | ASCII-символ возврата каретки (CR) |
\t | ASCII-символ табуляции (TAB) |
\uxxxx | 16-битный символ Юникода со значением xxxx |
\Uxxxxxxxx | 32-битный символ Юникода со значением xxxxxxxx |
\v | ASCII-символ отступа по вертикали (VT) |
\ooo | Символ ASCII в восьмеричной нотации ооо |
\xhh |
Символ ASCII в шестнадцатеричной нотации hh |
Методы и функции для работы со строчками
Метод или функция | Назначение метода |
len(s) | Длина строки |
s.find(str, [start],[end]) | Поиск подстроки. Возвращает индекс первого вхождения или -1 |
s.rfind(str, [start],[end]) | Поиск подстроки. Возвращает индекс последнего вхождения или -1 |
s.index(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError |
s.rindex(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError |
s.replace(изначальная строка, замена[, maxcount]) | Замена изначальной строки на замену. maxcount ограничивает количество замен |
s.split(символ) | Разбиение строки на список по указанному символу |
s.isdigit() | Содержит ли строка цифры |
s.isalpha() | Содержит ли строка буквы |
s.isalnum() | Содержит ли строка цифры или буквы |
s.islower() | Написана ли строка в нижнем регистре |
s.isupper() | Написана ли строка в верхнем регистре |
s.istitle() | Начинаются ли слова в строке с заглавной буквы |
s.upper() | Преобразовать строчку к верхнему регистру |
s.lower() | Преобразовать строчку к нижнему регистру |
s.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
s.strip(s) | Удаление пробельных символов в начале и в конце строки |
s.rstrip(s) | Удаление пробельных символов в конце строки |
s.lstrip() | Удаление пробельных символов в начале строки |
Задача:
Пользователь вводит имя, фамилию и отчество, каждое слово с новой строки. Ваша задача вывести инициалы в формате Ф.И.О.
Пример ввода-вывода
Ввод:
Александр
Пушкин
Сергеевич
Вывод:
П.А.С