Главная » Просмотр файлов » Лутц М. - Изучаем Python

Лутц М. - Изучаем Python (1077325), страница 42

Файл №1077325 Лутц М. - Изучаем Python (Лутц М. - Изучаем Python) 42 страницаЛутц М. - Изучаем Python (1077325) страница 422018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 42)

Вторая и третья инструкции делают то же самое, но используют 2-байтовое и 4-байтовое представление в виде экранированных последовательностей. Даже если вы полагаете, что вам не понадобятся символы Юникода, вам, возможно, хотя бы неявно придется использовать их. Поскольку На практике строки символов Юникода поддерживают все обычные операции над строками, которые встретятся вам в следующем разделе, поэтому для вашего программного кода различия в типах играют несущественную роль. Подобно обычным строкам, строки символов Юникода могут объединяться, из них можно извлекать отдельные символы и подстроки, производить поиск по шаблону с помощью модуля ге и т.

д., и эти строки также являются неизменяемыми. Даже если у вас возникнет необходимость явно выполнить преобразо. ванне между этими двумя типами, вы можете использовать встроенную функцию оптсобе: 189 Литералы строк некоторые программные интерфейсы (например, СОМ АР1 в «т'1пс(отта и некоторые синтаксические анализаторы ХМ1 ) представляют текст в кодировке Юникод, это может повлечь за собой необходимость выполнять преобразование между обычной кодировкой и кодировкой Юникод при передаче текста таким АР1 или при получении результатов.

В большинстве случаев интерпретатор Ру$Ьоп рассматривает эти два типа строк как взаимозаменяемые, поэтому присутствие строк символов Юникода часто проходит незамеченным для вашего программного кода — в большинстве случаев вы можете просто игнорировать тот факт, что текст передается между программными компонентами в виде объектов строк символов Юникода, и использовать обычные строковые операции. Поддержка Юникода — это полезное встроенное дополнение в языке Ру1Ьоп, поэтому данные в кодировке Юникод легко обрабатываются в сценариях. Безусловно, о Юникоде можно рассказать больше.

Например: ° Объекты строк Юникода предоставляют метод, выполняющий преобразования строки символов Юникода в обычную строку 8-битовых символов с использованием указанной кодировки. ° Встроенная функция зл(собе и модуль собеса поддерживают зарегистрированные «кодеки» («сос(ес», от слов «СОс(егз» и «ПЕСобегз») Юникода. ° Функция орел из модуля собес позволяет обрабатывать текстовые файлы в кодировке Юникод, где каждый символ может быть представлен более чем одним байтом. ° Модуль ол(созесата предоставляет доступ к базе данных символов Юникода. ° Модуль зуз включает функции для получения и изменения схемы кодирования Юникод (по умолчанию обычно используется АЗСП).

° Допускается комбинировать форматы представления неформатированных строк и строк символов Юникода (например, ос ' атэтс '). Поскольку тема использования кодировки Юникод является достаточно сложной, и это не самый распространенный инструмент, мы не будем обсуждать ее далее в этой вводной книге. Дополнительные сведения о Юникоде вы найдете в стандартном руководстве по языку РутЬоп. о В Ру«Ьоп 3.0 строковый тип претерпит некоторые изменения: в версии 3.0 текущий тип зт г всегда будет представлять строки символов Юникода, а также появится новый тнп — «байты», изменяемая последовательность малых целых чисел, удобная для представления коротких строк символов.

Некоторые операции чтения из файла будут возвращать байты вместо типа зт г (например, прн чтении двоичных файлов). Однако все зто пока только в планах, поэтому подробности вам следует искать в примечаниях к выпуску 3.0. Глава 7. Строки 190 Строки вдействии Как только с помощью литеральных выражений, с которыми мы только что познакомились, строка будет создана, вам наверняка потребуется выполнять какие-либо операции с ее участием.

В этом и в следующих двух разделах демонстрируются основы работы со строками, форматирование и методы — первая линия инструментальных средств обработки текста в языке Ру()топ. Базовые операции Давайте запустим интерактивный сеанс работы с интерпретатором Ру- $)топ, чтобы проиллюстрировать базовые операции над строками, которые были перечислены в табл.

7.1. Строки можно объединять с помощью оператора конкатенации + и дублировать с помощью оператора повторения *: и рутпоп »> 1вп('ввс') 3 »> 'вЬЬ' + 'Овт' 'аЬсвет' »> 'иы' и 'И(! ИП ИП ИП ' В длина: число алвивнтов В Конкатенация: новая строка В Повторение: подобно "Ит! " + ут! " + В отличие от массивов символов з языке С, при работе со строками з языке Ру()топ звм не нужно выделять илн управлять памятью массивов — зы просто создаете объекты строк, когда в этом возникает необходимость, и позволяете интерпретатору самому управлять памятью, выделяемой для этих объектов. Квк уже говорилось з предыдущей главе, Ру()топ автоматически освобождает память, занятую ненужными объектами, используя стрвтегвю сборки мусора, основанную нв подсчете количества ссылок.

Каждый объект следит зв количеством имен, структур данных и другими компонентами, которые ссылаются на него. Когда количество ссылок уменьшается до нуля, интерпретатор освобождает намять, занятую объектом. Зто означает, что интерпретатору не требуется останавливаться в просматривать всю память з поисках неиспользуемого пространства (дополяительвый компонент сборки мусора собирает также циклические объекты).

Формально операция сложения двух строковых объектов создает новый строковый объект, объединяющий содержимое операндов, Операция повторения напоминает многократное сложение строки с самой собой. В обоих случаях Ру()топ позволяет создавать строки произвольного размера — нет никакой необходимости предварительно объявлять что бы то ни было, включая размеры структур данных.' Встроенная функция 1вп возвращает длину строки (или любого другого объекта, который имеет длину). Операция повторения на первый взгляд выглядит несколько странно, но она очень удобна в очень широком диапазоне применений. Напри- 191 Строки в действии В ВО дефисов, сложный способ В ВО дефисов, простой способ »> рг1пт '--- — — ...иного дефисов... »> рг1п1 '-' ° 80 Обратите внимание: здесь работает механизм перегрузки операторов: мы используем те же самые операторы + и *, которые используются для выполнения операций сложения и умножения с числами.

Интерпретатор выполняет требуемую операцию, потому что ему известны типы объектов, к которым применяются операции сложения и умножения. Но будьте внимательны: правила не так либеральны, как может показаться. Например, интерпретатор не позволяет смешивать строки и числа в выражениях сложения: ' аЬс ' + 9 вызовет ошибку вместо того, чтобы автоматически преобразовать число 9 в строку.

Как показано в последней строке табл. 7.1, допускается выполнять обход элементов строки в цикле, используя инструкцию рог, и проверять вхождение подстроки в строку с помощью оператора выражения 1п, который, по сути, выполняет операцию поиска: »> ау)оэ = "Паскег" »> тог с 1п ау)оь: рг1пс с, й Обход элеиентов строки в цикле и а с к е г »> "К" 1п ау)оа Тгце »> "а" 1п ау)ЬЬ Га!эе й Найдено Ф Не найдено Оператор цикла ро г присваивает переменной очередной элемент последовательности (в данном случае — строки) и для каждого элемента выполняет одну или более инструкций. В результате переменная с превращается в своего рода курсор, который постепенно перемещается по строке.

Далее в этой книге мы подробнее рассмотрим средства выполнения итераций, подобных этим. Доступ по индексам и извлечение подстроки Так как строки определены как упорядоченные коллекции символов, мы можем обращаться к элементам строк по номерам позиций. В языке РуЖоп символы извлекаются из строк с помощью операции ивдексироеония — указанием числового смещения требуемого компонента в квадратных скобках после имени строки. В результате операции вы получаете строку, состоящую из одного символа, находящегося в указанной позиции. Как и в языке С, в языке Ру1поп смещения символов в строках начинают исчисляться с О, а последний символ в строке имеет смещение на единицу меньше длины строки.

Однако, в отличие от С, Ру1)топ также позволяет извлекать элементы последовательностей, таких как строки, мер, чтобы вывести строку из 80 символов дефиса, можно самому сосчитать до 80, а можно возложить эту работу на плечи интерпретатора: Строки в действии 193 Как же выполняется операция получения среза? Когда производится индексирование объекта последовательности, такого как строка, парой смещений, разделенных двоеточием, интерпретатор РуФ[топ возвращает новый объект, содержащий непрерывную область, определяемую парой смещений. Значение смещения слева от двоеточия обозначает левую границу (включительно), а справа — верхнюю границу (она не входит в срез). Интерпретатор извлекает все элементы от нижней границы до верхней, но верхняя граница в срез не включается.

Если левая и правая граница опущены, по умолчанию принимаются значения, равные О и длине объекта, из которого извлекаетея срез, соответственно. Например, для только что рассмотренного примера выражение 8[1: 3] вернет элементы ео смещениями 1 и 2. То есть будут извлечены второй и третий элементы, и операция остановится перед четвертым элементом со смещением, равным 3. Выражение 8[1: ] вернет все элементы, расиололсенные эа первым, — за значение верхней границы, которая в выражении опущена, по умолчанию принимается длина строки. Наконец, выражение 8[: -1] вернет все элементы, кроме последнего.

— за значение нижней границы по умолчанию принимается О, а индекс -1 соответствует последнему элементу, который в срез не включается. Все это может показатьея на первый взгляд слишком замысловатым, но операции извлечения отдельных элементов и срезов превратятся в простые и мощные инструменты, как только вы ими овладеете. Если вы забыли, как выполняется срез, попробуйте получить его в интерактивном сеансе. В следующей главе вы увидите, что существует возможность изменить целый раздел определенного объекта одной инструкцией, достаточно лишь выполнить операцию присваивания срезу.

Далее приводится краткий обзор для справки: ° Операция индексирования (8[1]) извлекает компоненты по их смещениям: ° Первый элемент имеет смещение, равное О. ° Отрицательные индексы определяют смещения в обратном порядке — от конца, или справа. ° Выражение 8[0] извлекает первый элемент. ° Выражение Я[-2] извлекает второй с конца элемент (так же как и выражение 8[1еп(8)-2]). ° Операция извлечения подстроки (8[1:]]) извлекает непрерывный раздел последовательности: ° Элемент с индексом, равным верхней границе, не включается в срез.

Характеристики

Тип файла
DJVU-файл
Размер
11,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее