Основы использования строковых методов

osnovy ispolzovaniya strokovyh metodov Системные инструменты

Пример 2.1 — это простая программа на языке Python, но в ней представлены три важные темы, заслуживающие краткого упоминания: она использует строковые методы, осуществляет чтение из файла и предусматривает возможность импортирования или выполнения как самостоятельного сценария. Строковые методы в языке Python как таковые не являются системными инструментами, но их можно встретить в большинстве программ на языке Python. В действительности они будут постоянно встречаться на протяжении этой и последующих глав, поэтому коротко рассмотрим наиболее полезные инструменты, имеющиеся в наборе. В число строковых методов входят вызовы для поиска и замены:

>>> mystr = xxxSPAMxxx

>>> mystr.find(‘SPAM’) # вернет индекс первого вхождения

3

>>> mystr = xxaaxxaa

>>> mystr.replace(‘aa’, ‘SPAM’) # замена всех вхождений xxSPAMxxSPAM

Вызов метода find возвращает смещение первого вхождения подстроки, а метод replace осуществляет глобальный поиск и замену. Как и все строковые операции, метод replace возвращает новую строку, оставляя исходную строку неизменной (напомню, что строки являются неизменяемыми объектами). Для всех этих методов подстроки являются просто строками; в главе 19 будет представлен модуль re, который позволяет использовать шаблоны регулярных выражений при поиске и замене.
В самых последних версиях Python имеется возможность использовать оператор in определения принадлежности, как альтернативу методу find, когда необходимо всего лишь получить ответ «да» или «нет» (он проверяет присутствие подстроки в строке). Существует также несколько методов, удаляющих пробельные символы из концов строки, что особенно полезно при работе с текстовыми строками, извлекаемыми из файла:

>>> mystr = xxxSPAMxxx

>>> SPAMin mystr # проверка присутствия подстроки в строке

True

>>> Niin mystr # если подстрока отсутствует

False

>>> mystr.find(‘Ni’)

>   1

>   >> mystr = ‘\t Ni\n’

>   >> mystr.strip() # удалит пробельные символы

‘Ni’

>>> mystr.rstrip() # то же самое, но только с правого конца

‘\t Ni

Среди строковых методов имеются также функции, которые могут быть полезны, например, как инструменты преобразования регистра символов, а кроме того, в стандартной библиотеке имеется модуль string, определяющий некоторые полезные константы:

>>> mystr = ‘SHRUBBERY’

подпись: # преобразует регистр символовподпись: # проверяет содержимое>>> mystr.lower()

‘shrubbery’

>>> mystr.isalpha()

True

>>> mystr.isdigit()

False

>>> import string # константы, например, для использования в in

>>> string.ascii_lowercase

abcdefghijklmnopqrstuvwxyz

>>> string.whitespace # пробельные символы

\t\n\r\x0b\x0c

Существуют также методы, позволяющие разбивать строки по подстрокам-разделителям и объединять их вместе, вставляя между ними подстроку. Эти средства будут изучены далее в этой книге, но в качестве знакомства покажем, как они работают:

подпись: >>> mystr = ‘aaa,bbb,ccc’
>>> mystr.split(‘,’)
[‘aaa’, ‘bbb’, ‘ccc’]
подпись: # разбить в список подстрок

>>> mystr = a b\nc\nd

>>> mystr.split() # разделитель по умолчанию: пробельные символы

[‘a’, ‘b’, ‘c’, ‘d’]

>>> delim = ‘NI’

>>> delim.join([‘aaa’, ‘bbb’, ‘ccc’]) # объединить подстроки из списка ‘aaaNIbbbNIccc’

>>> ‘.join([‘A’, ‘dead’, ‘parrot’]) # добавить пробел между подстроками

A dead parrot

>>> chars = list(‘Lorreta’) # преобразовать в список символов

>>> chars

[‘L’, ‘o’, ‘r’, ‘r’, ‘e’, ‘t’, ‘a’]

>>> chars.append(‘!’)

>>> ‘’.join(chars) # преобразовать в строку: с пустым разделителем

Lorreta!’

Эти вызовы оказываются удивительно мощными. Например, строку с колонками данных, разделенными символами табуляции, можно разобрать по колонкам единственным вызовом метода split; сценарий more.py, представленный выше, использует разновидность splitlines этого метода, чтобы разбить строку в список строк. На практике вызов метода replace можно эмулировать с помощью комбинации split/join:

>>> mystr = xxaaxxaa

>>> SPAM’.join(mystr.split(‘aa’)) # усложненная версия str.replace!

xxSPAMxxSPAM

Запомните на будущее, что язык Python не предусматривает автоматического преобразования строк в числа и обратно, поэтому если в этом возникнет необходимость, такие преобразования необходимо выполнять явно:

>>> int(“42”), eval(“42”) # преобразование строки в целое число

(42, 42)

>>> str(42), repr(42) # преобразование целого числа в строку

(‘42’, ‘42’)

>>> (“%d% 42), ‘{:d}’.format(42) # с помощью оператора и метода форматиров. (‘42’, ‘42’)

>>> “42” + str(1), int(“42”) + 1 # в операциях конкатенации и сложения

(‘421’, 43)

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

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий