ЛАБОРАТОРНАЯ РАБОТА №2

Тема: Модули. Строки

Цель: Рассмотрение способов подключения модулей, а также функций и методов работы с текстом

ОГЛАВЛЕНИЕ

1 Использование стандартных модулей
1.1 Подключение модулей
1.2 Модуль builtins
1.3 Модуль sys
1.4 Модуль string
2 Строки
2.1 Задание строк в виде литералов
2.2 Задание строк с помощью конструктора str()
2.3 Операции со строками
2.4 Индексация строк
2.5 Срезы строк
2.6 Встроенные функции строк
2.7 Методы строк
Индивидуальные задания

Оглавление

1 Использование стандартных модулей

Модуль на языке Python – это файл с расширением .py, содержащий операторы и определения функций и классов, как правило, общей области применения. Программы на языке Python тоже представляют собой файлы с расширением .py, но в отличие от модулей, которые используются для подключения к другим программам, предназначены для непосредственного выполнения.
При импорте модуля, т.е. подключении модуля к программе, интерпретатор ищет файл с именем, например my_module.py, сначала в текущем каталоге, затем в каталогах, указанных в переменной окружения PYTHONPATH, затем в зависящих от платформы путях, заданных по умолчанию, а также в специальных файлах с расширением .pth, которые находятся в стандартных каталогах.
Программист может внести изменения в PYTHONPATH и в .pth, добавив туда свой путь. Каталоги, в которых осуществляется поиск, указаны в переменной sys.path (см. подраздел 1.3).
Большие программы, как правило, состоят из стартового файла – файла верхнего уровня, и набора файлов-модулей. Главный файл выполняет функции управления программой.
В то же время модуль – это не только физический файл. Модуль представляет собой набор компонентов. В этом смысле модуль – это пространство имен (англ. namespace), и все имена внутри модуля называются атрибутами – такими, например, как функции и переменные. Для выяснения имен, определенных в модуле, используется встроенная функция dir() (см. подраздел 8.1 лаб. раб. №1). Она возвращает отсортированный список строк.
Python распространяется с библиотекой стандартных модулей. Библиотека включает в себя более 200 модулей, которые выполняют платформенно-зависимую поддержку таких задач, как: интерфейс к операционной системе, управление объектами, поиск, сеть и Internet, GUI и т.д.
Полный список стандартных модулей можно найти на http://docs.python.org/3/library/ или на http://docs.python.org/3/py-modindex.htm.
В данном практикуме рассмотрены следующие стандартные модули:

Помимо встроенных модулей в программах могут быть также использованы модули, разработанные пользователями (см. раздел 3 лаб. раб. №6).

Оглавление

1.1 Подключение модулей

Имеется несколько способов подключения модуля:

Оглавление

1.2 Модуль builtins

Модуль builtins обеспечивает прямой доступ ко всем встроенным идентификаторам языка Python: встроенным функциям и встроенным константам (см. подразделы 8.1 и 8.2 лаб. раб. №1). Загружается автоматически при запуске интерпретатора и поэтому обычно не требует явной загрузки.
Однако в некоторых случаях, например, когда пользователь описывает функцию open(), которая вызывает встроенную функцию open(), загрузить модуль builtins необходимо. При этом вызов встроенной функции осуществляется с использованием имени модуля: builtins.open().

Оглавление

1.3 Модуль sys

Модуль sys обеспечивает доступ к некоторым переменным и функциям, которые взаимодействуют с интерпретатором языка Python, что позволяет получить после подключения модуля

>>> import sys.

такие данные:

Оглавление

1.4 Модуль string

Модуль string содержит полезные классы и методы, а также следующие строковые константы:

Оглавление

2 Строки

Строки (англ. strings) в языке Python – неизменяемые последовательности (см. подраздел 1.4 лаб. раб. №3) символов в кодировке Unicode, которые имеют тип (класс) str и используются для хранения и представления текстовой информации, т.е. любых данных, которые могут быть представлены в текстовой форме.
Как и для большинства других объектов, для создания объектов класса str, т.е. строк, имеется два варианта – либо задав значение в виде строкового литерала (см. подраздел 2.1 ), либо с помощью конструктора класса – встроенной функции str() (см. подраздел 2.2 ).

 Оглавление

2.1 Создание строк с помощью литералов

Строки можно задавать в виде литералов с использованием:

Для совместимости с версиями 2.x языка Python, начиная с версии 3.3, разрешено использование префикса "u", который для версий 3.3 и выше ни на что не влияет:

>>> u'cat'
'cat'

Для помещения в строку символов, выполняющих в языке Python служебные функции (', " и \, а также символов, связанных с работой клавиатуры, используются наборы символов, называемые ESC-последовательностями. В таблице 1 приведено соотношение между ESC-последовательностями и символами, вставляемыми в строку при выводе вместо них.

Таблица 1 – Соотношение между ESC-последовательностями и символами

ESC-последовательностьСимвол
\''
\""
\\\
\bзабой
\nновая строка
\f (\x0c)новая страница
\rвозврат каретки
\tгоризонтальная табуляция
\v (\x0b)вертикальная табуляция
\aзвонок
\uhhhh16-битовый символ Юникода в 16-ричном представлении
\Uhhhh… 32-битовый символ Юникода в 16-ричном представлении
\xhh16-ричное значение символа
\ooo8-ричное значение символа
\0символ Null

Оглавление
Отметим, что для воспроизведения звука по \a необходимо запустить программу не из среды разработки, а по двойному щелчку по файлу.
Ниже приводится пример использования ESC-последовательностей для задания горизонтальной табуляции и новой строки:

>>> print ( "It's cat\tand that is dog\nnew string" )
It's cat         and that is dog
new string

Для экранирования большинства ESC-последовательностей необходимо перед строкой указать букву r или R. При этом создаются исходные строки ("raw strings"):

>>> print ( "1\t2\n\x33" )
1        2
3
>>> print ( r"1\t2\n\x33" )
1\t2\n\x33

Длинные строки можно располагать на нескольких рядках кода, используя символ обратного слэша ("\"):

>>> s= "word1 " \
"word2 " \
"word3"
>>> s
word1 word2 word3.
Одной из особенностей тройных кавычек является их применение для задания многострочного текста с соблюдением всех разделительных символов, при этом ESC-последовательности экранируются:

>>> print ( '''
"Из всех вещей, что нас окружают,
ничто есть величайшее"
Леонардо да Винчи '''
)

"Из всех вещей, что нас окружают,
ничто есть величайшее"
Леонардо да Винчи


Другой особенностью тройных кавычек являетеся их использование для документирования функций (см. подраздел 1.1лаб. раб. №6) и классов (см. подраздел 1.1 лаб. раб. №11).
Модуль string (см. подраздел 1.4 ) содержит строковые константы: все заглавные (uppercase) буквы, строчные (lowercase) буквы , цифры, символы пунктуации (punctuation) и разделительные символы (whitespace).
В табл. 2 представлены все разделительные символы.

Таблица 2 – Разделительные символы

ESC-последовательностьASCII-наименованиеНаименование
SPпробел
'\n'NLновая строка
'\r 'CRвозврат каретки
'\t 'HTгоризонтальная табуляция
'\v' (\x0b)VTвертикальная табуляция
'\f' (\x0c)FFновая форма

Оглавление

2.2 Создание строк с помощью конструктора класса

Строки могут быть созданы также с помощью конструктора класса – встроенной функции str(object='', encoding='utf-8', errors='strict'), которая возвращает представление объекта object в виде строки:

Число байтов, необходимых для хранения Unicode строк в памяти (для Python 3.4) зависит от наибольшего значения кода символа в строке:

Укажем, что BMP (Basic Multilangual Plane) означает базовую многоязыковую плоскость Юникода (первые 65536 символов), в которую входят и символы кириллицы.

Оглавление

2.3 Операции со строками

Над строками можно выполнять следующие операции:

Оглавление

2.4 Индексация строк

Хотя строки представляют собой неизменяемые последовательности символов, доступ к их отдельным символам допускается. Каждый символ строки имеет свой номер (индекс). Python поддерживает две системы нумерации символов:

Строки поддерживают операцию получения значения элемента строки по его индексу s[i], где s – строка, i – номер элемента (операция, общая для последовательностей, см. подраздел 1.4.2 лаб. раб. №3):

>>> s= 'Computer'
>>> s[0]
'C'
>>> s[7]
'r'
>>> s[-2]
'e'
>>> s[8]
IndexError: string index out of range

При обращении к индексу строки, который превышает номер ее последнего символа, произошла ошибка и интерпретатор сообшает:

IndexError: индекс строки вне диапазона.

Оглавление

2.5 Срезы строк

Помимо обращения к отдельным символам строки (см. подраздел 2.4 ) Python допускает обращение к отдельным последовательностям символов строки, которые называются срезами (англ. slices) строки. В общем случае операции со срезами, которые являются операциями, общими для последовательностей (см. подраздел 1.4.2 лаб. раб. №3), представляется следующей конструкцией:

s[i:j:k],

где:

Причем каждый из параметров i, j или k может быть опущен (даже все):

Срезы с неправильными границами обрабатываются следующим образом:

Примеры срезов:

>>> s2= 'Микропроцессор'
>>> s2[5:12]
'процесс'
>>> s2[:5]
'Микро'
>>> '0123456789' [::2]
'02468'.

В срезах можно использовать нумерацию справа налево:

>>> s2[-9:]
'процессор'

и выбирать символы среза справа налево:

>>> '0123456789' [-1:-11:-1]
'9876543210'

Пример задания пустого среза:

>>> '0123456789' [7:2]
''.

Отметим, что операции со срезом являются общими для последовательностей (см. подраздел 1.4.2 лаб. раб. №3).

 Оглавление

2.6 Встроенные функции строк

При работе со строками могут быть использованы следующие встроенные функции (см. подраздел 8.1 лаб. раб. №1):

Оглавление

2.7 Методы строк

При работе со строками могут быть использованы следующие методы (S – любая строка, которая может быть представлена либо в виде строкового литерала, либо в виде переменной типа str):

Оглавление

Индивидуальные задания

Разработать программу на языке Python, которая выполняет следующее:

Таблица 3 – Перечень индивидуальных заданий

Номер
п/п
СрезМетодТемы
12:7find()1,2,3,4,5
2:10replace()6,7,3,4,5
37:upper()6,2,8,4,5
42:12:2swapcase()6,2,3,5,9
53:8lower()2,3,4,6,10
6:6center()2,3,5,7,8
78:count()2,3,4,7,9
8:12,3endswith()2,3,4,8,10
91:5index()1,2,5,6,7
10:14ljust()1,2,3,6,10
114:rfind()1,2,3,4,9
123::2rindex()6,7,3,4,5
13-8:-1 rjust()6,2,8,4,9
14:-2startswith()6,8,3,5,9
155:-3 title()2,5,4,6,10
16-2-6:-2zfill()2,4,5,7,8
17-3:1:-1replace()5,3,4,7,9
181:-1 find()2,3,4,8,9
19:-8 isidentifier()4,2,5,6,7
20-4::-2 islower()8,2,3,6,10

Оглавление