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

Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 60

Файл №1184811 Марк Лутц - Изучаем Python, Четвертое издание (Марк Лутц - Изучаем Python, Четвертое издание) 60 страницаМарк Лутц - Изучаем Python, Четвертое издание (1184811) страница 602020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Он принимает в качестве аргумента оригинальную подстроку(любой длины) и строку (любой длины) замены, и выполняет глобальный поискс заменой:>>> ‘aa$bb$cc$dd’.replace(‘$’, ‘SPAM’)‘aaSPAMbbSPAMccSPAMdd’В этой роли метод replace может использоваться как инструмент реализациипоиска с заменой по шаблону (например, замены символов формата). Обратитевнимание, что на этот раз мы просто выводим результат на экран, а не присваиваем его переменной – присваивать результат переменной необходимо тольков том случае, если потребуется сохранить результат дальнейшего использования.Если необходимо заменить одну подстроку фиксированного размера, котораяможет появиться в любом месте, можно также выполнить операцию заменыили отыскать подстроку с помощью метода find и затем воспользоваться операциями извлечения подстроки:>>> S = ‘xxxxSPAMxxxxSPAMxxxx’>>> where = S.find(‘SPAM’)# Поиск позиции>>> where# Подстрока найдена со смещением 44>>> S = S[:where] + ‘EGGS’ + S[(where+4):]>>> S‘xxxxEGGSxxxxSPAMxxxx’230Глава 7.

СтрокиМетод find возвращает смещение, по которому найдена подстрока (по умолчанию поиск начинается с начала строки), или значение -1, если искомая подстрока не найдена. Другой вариант использования метода replace заключаетсяв передаче третьего аргумента, который определяет число производимых замен:>>> S = ‘xxxxSPAMxxxxSPAMxxxx’>>> S.replace(‘SPAM’, ‘EGGS’)‘xxxxEGGSxxxxEGGSxxxx’>>> S.replace(‘SPAM’, ‘EGGS’, 1)‘xxxxEGGSxxxxSPAMxxxx’# Заменить все найденные подстроки# Заменить одну подстрокуОбратите внимание: метод replace возвращает новую строку.

Так как строкиявляются неизменяемыми, методы никогда в действительности не изменяюторигинальную строку, даже если они называются «replace» (заменить)!Тот факт, что операция конкатенации и метод replace всякий раз создают новые строковые объекты, может оказаться недостатком их использования дляизменения строк. Если в сценарии производится множество изменений длинных строк, вы можете повысить производительность сценария, преобразовавстроку в объект, который допускает внесение изменений:>>> S = ‘spammy’>>> L = list(S)>>> L[‘s’, ‘p’, ‘a’, ‘m’, ‘m’, ‘y’]Встроенная функция list (или функция-конструктор объекта) создает новыйсписок из элементов любой последовательности – в данном случае «разрывая»строку на символы и формируя из них список.

Обладая строкой в таком представлении, можно производить необходимые изменения, не вызывая созданиеновой копии строки при каждом изменении:>>> L[3] = ‘x’# Этот прием допустим для списков, но не для строк>>> L[4] = ‘x’>>> L[‘s’, ‘p’, ‘a’, ‘x’, ‘x’, ‘y’]Если после внесения изменений необходимо выполнить обратное преобразование (чтобы, например, записать результат в файл), можно использовать методjoin, который «собирает» список обратно в строку:>>> S = ‘’.join(L)>>> S‘spaxxy’Метод join на первый взгляд может показаться немного странным.

Так как онявляется строковым методом (а не методом списка), он вызывается через указание желаемой строки-разделителя. Метод join объединяет строки из списка,вставляя строку-разделитель между элементами списка. В данном случае приполучении строки из списка используется пустая строка-разделитель. В болееобщем случае можно использовать произвольную строку-разделитель:>>> ‘SPAM’.join([‘eggs’, ‘sausage’, ‘ham’, ‘toast’])‘eggsSPAMsausageSPAMhamSPAMtoast’Строковые методы231На практике объединение подстрок в одну строку часто выполняется намногобыстрее, чем последовательность операций конкатенации отдельных элементов списка. Обратите также внимание на упоминавшийся выше строковый типbytearray, появившийся в версиях Python������������������������������������������������������������������������������ 3.0 и 2.6, который полностью описывается в главе 36, – благодаря тому, что объекты этого типа могут изменятьсянепосредственно, в некоторых случаях он представляет отличную альтернативу комбинации функций list/join, особенно когда текст приходится изменятьдостаточно часто.Примеры методов строк: разбор текстаЕще одна распространенная роль, которую играют методы строк, – это простейший разбор текста, то есть анализ структуры и извлечение подстрок.

Дляизвлечения подстрок из фиксированных смещений можно использовать приемизвлечения срезов:>>> line = ‘aaa bbb ccc’>>> col1 = line[0:3]>>> col3 = line[8:]>>> col1‘aaa’>>> col3‘ccc’В этом примере поля данных располагаются в фиксированных позициях и потому могут быть легко извлечены из оригинальной строки. Этот прием можетиспользоваться, только если анализируемые компоненты располагаются в известных фиксированных позициях. Если поля отделяются друг от друга некоторым разделителем, можно воспользоваться методом разбиения строки накомпоненты. Этот прием используется, когда искомые данные могут располагаться в произвольных позициях внутри строки:>>> line = ‘aaa bbb ccc’>>> cols = line.split()>>> cols[‘aaa’, ‘bbb’, ‘ccc’]Строковый метод split преобразует строку в список подстрок, окружающих строки-разделители.

В предыдущем примере мы не указали строкуразделитель, поэтому по умолчанию в качестве разделителей используютсяпробельные символы – строка разбивается на группы по символам пробела,табуляции или перевода строки, и в результате мы получили список подстрок.В других случаях данные могут отделяться другими разделителями. В следующем примере производится разбиение (и, следовательно, разбор) строки посимволу запятой, который обычно используется для отделения данных, извлеченных из баз данных:>>> line = ‘bob,hacker,40’>>> line.split(‘,’)[‘bob’, ‘hacker’, ‘40’]Разделители могут содержать более одного символа:>>> line = “i’mSPAMaSPAMlumberjack”>>> line.split(“SPAM”)[“i’m”, ‘a’, ‘lumberjack’]232Глава 7.

СтрокиХотя оба способа, основанные на извлечении подстрок и разбиении строк, имеют определенные ограничения, они работают достаточно быстро и могут использоваться для разбора текстовой информации в простых случаях.Другие часто используемые методы строк в действииДругие строковые методы имеют более специфическое предназначение, например удаляют пробельные символы в конце текстовой строки, выполняютпреобразование регистра символов, проверяют характер содержимого строкии проверяют наличие подстроки в конце строки или в начале:>>> line = “The knights who say Ni!\n”>>> line.rstrip()‘The knights who say Ni!’>>> line.upper()‘THE KNIGHTS WHO SAY NI!\n’>>> line.isalpha()False>>> line.endswith(‘Ni!\n’)True>>> line.startswith(‘The’)TrueДля достижения тех же результатов в некоторых случаях могут использоваться альтернативные приемы – с использованием оператора проверки вхождения in можно проверить присутствие подстроки, а функция получения длиныстроки и операция извлечения подстроки могут использоваться для имитациидействия функции endswith:>>> line‘The knights who say Ni!\n’>>> line.find(‘Ni’) != -1 # Поиск с использованием вызова метода или выраженияTrue>>> ‘Ni’ in lineTrue>>> sub = ‘Ni!\n’>>> line.endswith(sub)# Проверка наличия подстроки в конце строкиTrue# с помощью метода или операции извлечения подстроки>>> line[-len(sub):] == subTrueОбратите также внимание на строковый метод format, который описываетсяниже в этой главе, – он позволяет реализовать более сложные способы подстановки в одной инструкции, чем комбинирование нескольких операций.Для работы со строками существует достаточно много методов, поэтому мы небудем рассматривать их все.

Некоторые методы вы увидите далее в этой книге,а за дополнительной информацией вы можете обратиться к руководству по библиотеке языка Python и другим источникам информации или просто поэкспериментировать с ними в интерактивном режиме. Кроме того, можно изучитьрезультат вызова функции help(S.method), чтобы познакомиться с описаниемметода method для любого объекта строки S.Обратите внимание, что ни один из строковых методов не поддерживает шаблоны, – для обработки текста с использованием шаблонов необходимо использо-Строковые методы233вать модуль re, входящий в состав стандартной библиотеки языка Python, – дополнительный инструмент, начальные сведения о котором приводились в главе 4, а полное его обсуждение выходит далеко за рамки этой книги (один пример приводится в конце главы 36).

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

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

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

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