Главная » Просмотр файлов » Саммерфилд - Программирование на Python 3

Саммерфилд - Программирование на Python 3 (1077331), страница 18

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

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

сошр11е(г" ((?: [(]хо+[) ])?уз*хо»(?: -хо»)?)3' ) 86 Глава 2. Типы данных Таблица 2.6. Экранированные последовательности в языке РуГИоп Последовательность Значение Экранирует (то есть игнорирует) символ перевода строки Символ обратного спеша (т) Апостроф (') Кавычка (") Символ АЯСП «сигнал» (Ье!1, ВЕ1.) Символ АЯСП «забой» (Ьас)карасе, ВБ) Символ АЯСП «перевод формата* (1огш(вед, гр) Символ АБСП «перевод строки» (11це(сед, 1.г) Символ Юникода с заданным названием Чгеревод строки (в (ь 1п (Н(название) 'топо Символ с заданным восьмеричным кодом Символ АБСП «возврат каретки» (сагг1аяе гегшгп, СВ) (г Символ АБСП «табуляция* (ФаЬ, ТАВ) Символ Юннкода с указанным 16-битовым шестнадца- теричным значением ,ылллл Символ Юннкода с указанным 32-битовым шестнадца- теричным значением Флплппппл Символ АБСП «вертикальная табуляция» (чег11са! ЬаЬ, ЧТ) 'хч Символ с указанным Я-битовым шестнадцатеричным значением (хпп Если потребуется записать длинный строковый литерал, занимающий две или более строк, но без использования тройных кавычек, то можно использовать один из приемов, показанных ниже: т = тбто нв свный лучший способ объединений двух длинных строк, "потому что он основан нв использовании неуклюжего зкрвнироввнил" в = (Гэто отличный способ обьединить двв длинные строки, " потому что он основан нв конкатенации строковых литералов.") Обратите внимание, что во втором случае для создания единственного выражения мы должны были использовать круглые скобки — без этих скобок переменной в была бы присвоена только первая строка, а наличие второй строки вызвало бы исключение 1пбеп(зг(опЕггог.

В руководстве «161ошв апг) Ап(1-1Й1ошв», которое можно отыскать в документации к языку Ру(Ьоп, рекомендуется вместо зкранирования перевода строки всегда использовать круглые скобки для объединения операторов, не умещающихся в одну строку; именно этой рекомендации мы и будем следовать. Строки ву Поскольку содержимое файлов .ру по умолчанию представляет собой текст в кодировке 1)ТУ-8 Юникод, мы можем использовать в строковых литералах любые символы Юникода.

Мы можем даже помещать в строковые литералы символы Юникода, используя шестнадцатеричные экранированные последовательности или названия символов Юникода, например: »> еогоа = 7В 1З(еого 810п) 1О20АС 10000020АС" »> ргтпт(еогоа) В Я В данном случае мы не можем использовать обычную шестнадцатеричную экранированную последовательность, так как она ограничена двумя цифрами и не может представлять символы с кодом больше„чем Охгг. Обратите внимание, что названия символов Юникода не чувствительны к регистру и пробелы внутри них являются необязательными. Для определения кода символа Юникода (целое число, связанное с символом в кодировке Юникод) в строке, охааопоа можно использовать встроенную функцию ого(). Напри- сто.112 мер: »> ого(еогоа(0)) 8364 »> Пах(огс(еигоа(0))) 'Ох20ао' Точно так же можно преобразовать любое целое число, представляющее собой допустимый код некоторого символа Юникода, воспользовавшись функцией с)т г ( ) т »> а = "апагоП1ата аге " + оог(8734) + оог(Ох238?) »> а 'апагоыата ага » l' »> даот1(а) "'апагоыжа ага 'то221а>о23Ь?'" Если ввести а в среде 101 Е, содержимое объекта будет Матса отг.

выведено в строковой форме; для строк это означает, что тогаат() содержимое выводится в кавычках. Если нам потребует- отр.100 ся вывести только символы АЯСП, мы можем воспользоваться встроенной функцией аас11(), которая возвращает репрезентативную форму своего аргумента, используя 7-битовые символы АЯСП, где это возможно; в противном случае используется наиболее краткая экранированная последовательность из возможных: >тхдо, >,огтДПП или ~,УОПОПП000.

Ниже в этой главе будет показано, как получить полный контроль над выводом строк. вв Глава 2. Типы данных Сравнение строк Строки поддерживают обычные операторы сравнения «, =, ==, ! =, > и >кп Эти операторы выполняют побайтовое сравнение строк в памяти. К сожалению, возникают две проблемы при сравнении, например, строк в отсортированных списках. Обе проблемы проявляются во всех языках программирования и не являются характерной особенностью Ру1Ьоп. о Первая проблема связана с тем, что символы Юникода Кодировки оиивоиов могут быть представлены двумя и более последовательстр.112 ностями байтов. Например, ««(символ Юникода с кодом ОхООС5) в кодировке Т)ТР-8 может быть представлен тремя различными способами: (ОхЕ2, Ох84, ОхА8], (ОхСЗ, Ох85] и(Ох41, ОхСС, Ох8А].

Ксчастью, мы можем решить эту проблему. Если импортировать модуль ил(собедаГа и вызвать функцию ол1сооеоага. по<за!же() со значением «МРКП» в первом аргументе (эта аббревиатура определяет способ нормализации «Могша11хаС1оп Рогт Сотра$1Ь1!Иу Песотроэ111оп» вЂ” нормализация в форме совместимой декомпозиции), то, передав ей строку, содержащую символ ч, представленный любой из допустимых последовательностей байтов, мы получим строку с символами в кодировке ПТР-8, где интересующий нас символ всегда будет представлен последовательностью (Ох41, ОхСС, Ох8А]. Вторая проблема заключается в том, что порядок сортировки некоторых символов зависит от конкретного языка. Например, в шведском языке при сортировке символ а следует после символа г, тогда как в немецком языке символ а сортируется так, как если бы он был представлен последовательностью символов ае.

Еще один пример: в английском языке символ Ф сортируется как символ о, а в датском и норвежском языках он следует после символа г. Со строками Юникода связана масса проблем, которые становятся трудноразрешимыми, когда одним и тем же приложением могут пользоваться люди разных национальностей (привыкшие к различным порядкам расположения символов),когда строки содержат текст сразу на нескольких языках (например, часть строки на испанском, а часть на английском), и особенно, если учесть, что некоторые символы (такие как стрелки, декоративные и математические символы) не имеют определенного порядка сортировки.

Будучи настоящим политиком, во избежание трудноуловимых ошибок РуФЬоп не делает никаких предположений. В смысле сравнения строк это означает, что выполняется побайтовое сравнение строк в памяти. При таком подходе порядок сортировки определяется кодами Юникода, что для английского языка дает сортировку в соответствии с кодами АЯСП. Перевод всех символов строк в нижний или в верхнии 89 Строки регистр обеспечит более естественный порядок сортировки для английского языка. Нормализация может потребоваться, только когда текстовые строки поступают из внешних источников, таких как файлы или сетевые сокеты, но даже в этих случаях едва ли стоит применять ее, если нет веских доказательств в ее необходимости.

При этом мы, конечно, можем настроить методы сортировки, как будет показано в главе 3. Проблема сортировки строк Юникода подробно рассматривается вдокументе «1)п1сос)е СоПа$1оп А1дог11)тт«(ип!сот1е,огя/герог2в/тг1 0). Получение срезов строк Из описания составляющей №3 нам известно, что от- СоставлвюДЕЛЬНЫЕ ЭЛЕМЕНТЫ ПОСЛЕДОВатЕЛЬНОСтИ, а, СЛЕДОВатЕЛЬ- щек лт3 но, и отдельные символы в строках, могут извлекаться стр. 32 с помощью оператора доступа к элементам ([]). В действительности этот оператор намного более универсальный и может использоваться для извлечения не только одного символа, но и целых комбинаций (подпоследовательностей) элементов или символов, когда этот оператор используется в контексте оператора извлечения среза.

Для начала мы рассмотрим возможность извлечения отдельных символов. Нумерация позиций символов в строках начинается с 0 и продолжается до значений длины строки минус 1. Однако допускается использовать и отрицательные индексы — в этом случае отсчет начинается с последнего символа и ведется в обратном направлении к первому символу. На рис.

2.1 показано, как нумеруются позиции символов в строке, если предположить, что было выполнено присваивание 3 = "ст9от Гзу'. Рис. 2.1. Номера позиций символов в сатрапе Отрицательные индексы удивительно удобны, особенно индекс -1, который всегда соответствует последнему символу строки. Попытка обращения к индексу, находящемуся за пределами строки 1или к любому индексу в пустой строке), будет вызывать исключение 1ооекЕггог.

Оператор получения среза имеет три формы записи: 90 Глава 2. Типы данных вес [а тагт1 зер[зтагкепв] вер[зтагттепсезтер] Ссылка вер может представлять любую последовательность, такую как список, строку или кортеж. Значения в[агт, епд и взор должны быть целыми числами (или переменными, хранящими целые числа). Мы уже использовали первую форму записи оператора доступа к элементам: с ее помощью извлекается элемент последовательности с индексом атаги Вторая форма записи извлекает подстроку, начиная с элемента с индексом втагз и заканчивая элементом с индексом епс), не включая его.

Третью форму записи мы рассмотрим очень скоро. При использовании второй формы записи (с одним двоеточием) мы можем опустить любой из индексов. Если опустить начальный индекс, по умолчанию будет использоваться значение О. Если опустить конечный индекс, по умолчанию будет использоваться значение 1еп(вес). Это означает, что если опустить оба индекса, например, в[: ], это будет равносильно выражению в[0:1еп(в)], и в результате будет извлечена, то есть скопирована, последовательность целиком.

На рис. 2.2 приводятся некоторые примеры извлечения срезов из строки в, которая получена в результате присваивания в = "Тйе ыахиогК еап". Рис. 2.2. Извлечение срезов из последовательности Один из способов вставить подстроку в строку состоит в смешивании операторов извлечения среза и операторов конкатенации. Например: »> в = в[.'12] + "ыо" + в[12:1 »> в 'Тле ыахыогх ыоиап' Кроме того, поскольку текст»что» присутствует в оригинальной строке, тот же самый эффект можно было бы получить путем присваивания значениявыражения в[;12]» в[7:9]» в[12:]. о Операторы Оператор конкатенации + и добавления подстроки += не а иаюпы особенно эффективны, когда в операции участвует мностроа,стр.вв жество строк. Для объединения большого числа строк обычно лучше использовать метод зтг. ) о[п[), с которым мы познакомимся в следующем подразделе. 91 Строки Рис.

2.3. Извлечение разреженных срезов Третья форма записи (с двумя двоеточиями) напоминает вторую форму, но в отличие от нее значение втер определяет, с каким шагом следует извлекать символы. Как и при использовании второй формы записи, мы можем опустить любой из индексов. Если опустить начальный индекс, по умолчанию будет использоваться значение О, при условии, что задано неотрицательное значение атер; в противном случае начальный индекс по умолчанию получит значение -1.

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

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

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

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