Введение
В этой лабораторной работе вы изучите основные методы манипулирования строками (strings) в Python. Строки являются одним из наиболее распространенных типов данных, и умение эффективно с ними работать — ключевой навык для любого Python-программиста. Мы рассмотрим все: от базовых определений, использования специальных символов и создания многострочных строк до более продвинутых операций, таких как доступ к подстрокам, проверка содержимого, изменение регистра, поиск, разделение (splitting) и форматирование текста. К концу этой лабораторной работы у вас будет прочная основа для работы с текстовыми данными в ваших программах на Python.
Управляющие символы и многострочные строки
На этом шаге вы узнаете, как обрабатывать специальные символы внутри строк, создавать строки, игнорирующие эти специальные символы, и определять строки, охватывающие несколько строк.
Сначала рассмотрим экранирующие символы (escape characters). Экранирующий символ — это обратная косая черта (\), за которой следует символ, который вы хотите вставить. Например, \n обозначает новую строку, а \' обозначает одинарную кавычку.
Примечание: Если вы не знакомы с использованием WebIDE (похожего на VS Code), изучите его сначала в этой лаборатории.
Откройте файл main.py в проводнике файлов слева. Добавьте в него следующий код:
## Экранирующие символы: используйте обратную косую черту для вставки специальных символов
## \n = новая строка, \' = одинарная кавычка
print("Hello there!\nHow are you?\nI\'m doing fine.")
Теперь запустите скрипт, открыв терминал и выполнив приведенную ниже команду. Вы можете открыть новый терминал, нажав значок + на панели терминала.
python3 main.py
Вы увидите вывод с корректно вставленными символами новой строки и одинарной кавычкой.
Hello there!
How are you?
I'm doing fine.
Далее рассмотрим сырые строки (raw strings). Сырая строка, которой предшествует префикс r, игнорирует все экранирующие символы и выводит любую обратную косую черту, которая появляется в строке. Это особенно полезно для регулярных выражений или путей к файлам.
Замените содержимое main.py следующим кодом:
## Сырая строка (префикс r): рассматривает обратные косые черты как литеральные символы
print(r"Hello there!\nHow are you?\nI\'m doing fine.")
Снова запустите скрипт:
python3 main.py
Обратите внимание, как \n и \' теперь обрабатываются как литеральные символы в выводе.
Hello there!\nHow are you?\nI\'m doing fine.
Наконец, вы можете создавать многострочные строки с помощью тройных кавычек (""" или '''). Это удобный способ определения строк, охватывающих несколько строк, с сохранением форматирования.
Замените содержимое main.py этим примером:
print(
"""Dear Alice,
Eve's cat has been arrested for catnapping,
cat burglary, and extortion.
Sincerely,
Bob"""
)
Выполните скрипт:
python3 main.py
Вывод будет отформатированным многострочным сообщением.
Dear Alice,
Eve's cat has been arrested for catnapping,
cat burglary, and extortion.
Sincerely,
Bob
Индексация и срезы строк
На этом шаге вы узнаете, как получать доступ к отдельным символам и извлекать подстроки с помощью индексации и срезов (slicing).
Строки в Python являются последовательностями (sequences), что означает, что вы можете обращаться к их частям, используя индекс. Индексация начинается с 0 для первого символа.
H e l l o w o r l d !
0 1 2 3 4 5 6 7 8 9 10 11
Очистите файл main.py и добавьте в него следующий код для определения строки:
spam = 'Hello world!'
Чтобы получить доступ к первому символу ('H'), вы используете индекс 0. Чтобы получить доступ к пятому символу ('o'), вы используете индекс 4. Вы также можете использовать отрицательные индексы для счета с конца строки; -1 ссылается на последний символ.
Добавьте эти операторы print в main.py, чтобы увидеть индексацию в действии:
spam = 'Hello world!'
## String indexing: access characters by position (0-based)
print(spam[0]) ## Returns first character
print(spam[4]) ## Returns fifth character
print(spam[-1]) ## Returns last character
Запустите скрипт:
python3 main.py
Вывод покажет отдельные символы, к которым вы получили доступ.
H
o
!
Срезы (Slicing) позволяют извлечь часть строки, называемую подстрокой. Синтаксис: [start:end], который извлекает символы, начиная с индекса start и до, но не включая, индекса end.
Попрактикуемся в срезах. Замените содержимое main.py следующим кодом. Мы рассмотрим несколько различных способов получения срезов строки.
spam = 'Hello world!'
## String slicing: extract substring using [start:end] syntax
print(spam[0:5]) ## Returns characters from index 0 to 4
print(spam[:5]) ## Omitting start index defaults to 0
print(spam[6:]) ## Omitting end index defaults to the end of the string
print(spam[::-1]) ## A step of -1 reverses the string
Выполните скрипт:
python3 main.py
Наблюдайте за различными подстроками, созданными с помощью срезов.
Hello
Hello
world!
!dlrow olleH
Проверка вхождения и методы изменения регистра строк
На этом шаге вы узнаете, как проверить, содержится ли подстрока в строке, а также как изменять и проверять регистр строки.
Операторы in и not in используются для проверки членства подстроки в строке. Они возвращают логическое значение: True или False.
Очистите файл main.py и добавьте следующий код для тестирования этих операторов. Обратите внимание, что сравнение чувствительно к регистру.
## The 'in' and 'not in' operators
print('Hello' in 'Hello World')
print('HELLO' in 'Hello World')
print('cats' not in 'cats and dogs')
Запустите скрипт, чтобы увидеть логические результаты:
python3 main.py
True
False
False
Python также предоставляет несколько методов для изменения регистра строки. Методы upper(), lower() и title() возвращают новую строку, полностью состоящую из заглавных букв, полностью из строчных букв или в регистре заголовка (где каждая первая буква слова заглавная) соответственно.
Замените содержимое main.py следующим:
greet = 'Hello world!'
print(greet.upper())
print(greet.lower())
print(greet.title())
Выполните скрипт:
python3 main.py
Вы увидите преобразованные строки.
HELLO WORLD!
hello world!
Hello World!
Чтобы проверить, находится ли строка уже в определенном регистре, вы можете использовать методы isupper() и islower(). Эти методы возвращают True, если все символы, имеющие регистр, в строке имеют указанный регистр и в строке есть хотя бы один такой символ.
Замените содержимое main.py этими примерами:
spam = 'Hello world!'
print(spam.islower())
print('HELLO'.isupper())
## This is true because non-letter characters are ignored
print('abc12345'.islower())
## This is false because there are no cased characters
print('12345'.islower())
Запустите скрипт, чтобы проверить регистр каждой строки.
python3 main.py
False
True
True
False
Поиск и разделение строк
На этом шаге вы узнаете, как проверить, начинается ли строка или заканчивается ли она определенной подстрокой, как объединить список строк в одну строку и как разделить строку на список подстрок.
Методы startswith() и endswith() полезны для проверки начала или конца строки. Они возвращают True или False.
Очистите main.py и добавьте следующий код:
print('Hello world!'.startswith('Hello'))
print('Hello world!'.endswith('world!'))
print('abc123'.startswith('abcdef'))
Запустите скрипт, чтобы увидеть результаты:
python3 main.py
True
True
False
Метод join() вызывается для строки-разделителя и принимает итерируемый объект (например, список) в качестве аргумента. Он объединяет элементы итерируемого объекта в одну строку, помещая разделитель между каждым элементом.
Замените содержимое main.py этими примерами, чтобы увидеть, как работает join():
## Join with a comma and space separator
print(', '.join(['cats', 'rats', 'bats']))
## Join with a space separator
print(' '.join(['My', 'name', 'is', 'Simon']))
Выполните скрипт:
python3 main.py
cats, rats, bats
My name is Simon
Метод split() делает обратное join(). Он вызывается для строки и разбивает ее на список подстрок. По умолчанию он разделяет по пробельным символам (whitespace), но вы можете указать определенный разделитель (delimiter).
Замените содержимое main.py следующим кодом, чтобы попрактиковаться в разделении строк:
## Split by default whitespace
print('My name is Simon'.split())
## Split by a specific delimiter 'ABC'
print('MyABCnameABCisABCSimon'.split('ABC'))
Запустите скрипт, чтобы увидеть полученные списки:
python3 main.py
['My', 'name', 'is', 'Simon']
['My', 'name', 'is', 'Simon']
Выравнивание и очистка строк
На этом шаге вы узнаете, как форматировать выравнивание текста и как удалять нежелательные символы, такие как пробелы, с начала или конца строки.
Python предоставляет методы для выравнивания текста в заданной ширине: rjust() (выравнивание по правому краю), ljust() (выравнивание по левому краю) и center() (выравнивание по центру). Эти методы возвращают новую дополненную строку.
Очистите файл main.py и добавьте следующий код:
print('Hello'.rjust(10))
print('Hello'.ljust(10))
print('Hello'.center(20))
Запустите скрипт, чтобы увидеть выровненный текст. Одинарные кавычки в выводе помогают визуализировать дополнение (padding).
python3 main.py
Hello
Hello
Hello
Вы также можете предоставить необязательный второй аргумент для указания символа заполнения, отличного от пробела. Замените содержимое main.py следующим:
print('Hello'.rjust(20, '*'))
print('Hello'.center(20, '='))
Снова запустите скрипт:
python3 main.py
***************Hello
=======Hello========
Для очистки строк вы можете использовать методы strip(), rstrip() и lstrip(). Они используются для удаления символов с концов строки. По умолчанию они удаляют пробельные символы (пробелы, табуляции, символы новой строки).
Замените содержимое main.py этим примером:
spam = ' Hello World '
print(spam.strip()) ## Удаляет с обоих концов
print(spam.lstrip()) ## Удаляет с левой стороны
print(spam.rstrip()) ## Удаляет с правой стороны
Выполните скрипт, чтобы увидеть очищенные строки:
python3 main.py
Hello World
Hello World
Hello World
Вы также можете передать строковый аргумент этим методам, чтобы указать, какие символы следует удалить. Метод удалит все символы из аргумента, которые находятся на концах строки.
Замените содержимое main.py в последний раз:
spam = 'SpamSpamBaconSpamEggsSpamSpam'
## Removes all characters 'S', 'p', 'a', 'm' from the ends
print(spam.strip('ampS'))
Запустите скрипт:
python3 main.py
Вывод показывает, что внешние части "Spam" были удалены, оставив центральную часть строки.
BaconSpamEggs
Резюме
В этой лабораторной работе вы освоили основные методы манипулирования строками в Python. Вы узнали, как использовать управляющие символы (escape characters) и создавать многострочные строки для лучшего представления текста. Вы попрактиковались в доступе к частям строки с помощью индексации (indexing) и срезов (slicing). Вы также изучили мощные строковые методы для проверки вхождения (in, not in), изменения регистра (upper(), lower()), проверки регистра (isupper(), islower()), поиска (startswith(), endswith()), объединения и разделения, и, наконец, форматирования и очистки текста (rjust(), strip()). Эти навыки являются основополагающими для любой задачи, связанной с обработкой текста в Python.



