Выбрать главу

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

>>> todos = 'get gloves,get mask,give cat vitamins,call ambulance'

>>> todos.split(',')

['get gloves', 'get mask', 'give cat vitamins', 'call ambulance']

В предыдущем примере строка имела имя todos, а строковая функция называлась split() и получала один аргумент ','. Если вы не укажете разделитель, функция split() будет использовать любую последовательность пробелов, а также символы новой строки и табуляцию:

>>> todos.split()

['get', 'gloves,get', 'mask,give', 'cat', 'vitamins,call', 'ambulance']

Если вы вызываете функцию split без аргументов, вам все равно нужно добавлять круглые скобки — именно так Python узнает, что вы вызываете функцию.

Объединяем строки с помощью функции join()

Для вас не должен стать великим открытием тот факт, что функция join() является противоположностью функции split(): она объединяет список строк в одну строку. Вызов функции выглядит немного запутанно, поскольку сначала вы указываете строку, которая объединяет остальные, а затем — список строк для объединения: string.join(list). Для того чтобы объединить список строк lines, разделив их символами новой строки, вам нужно написать '\n'.join(lines). В следующем примере мы объединим несколько имен в список, разделенный запятыми и пробелами:

>>> crypto_list = ['Yeti', 'Bigfoot', 'Loch Ness Monster']

>>> crypto_string = ', '.join(crypto_list)

>>> print('Found and signing book deals:', crypto_string)

Found and signing book deals: Yeti, Bigfoot, Loch Ness Monster

Развлекаемся со строками

Python содержит большой набор функций для работы со строками. Рассмотрим принцип работы самых распространенных из них. Объектом для тестов станет следующая строка, содержащая текст бессмертного стихотворения What Is Liquid? Маргарет Кэвендиш (Margaret Cavendish), графини Ньюкасл:

>>> poem = '''All that doth flow we cannot liquid name

Or else would fire and water be the same;

But that is liquid which is moist and wet

Fire that property can never get.

Then 'tis not cold that doth the fire put out

But 'tis the wet that makes it die, no doubt.'''

Для начала получим первые 13 символов (их смещения лежат в диапазоне от 0 до 12):

>>> poem[:13]

'All that doth'

Сколько символов содержит это стихотворение? (Пробелы и символы новой строки учитываются.)

>>> len(poem)

250

Начинается ли стихотворение с буквосочетания All?

>>> poem.startswith('All')

True

Заканчивается ли оно буквосочетанием That's all, folks!?

>>> poem.endswith('That\'s all, folks!')

False

Найдем смещение первого включения слова the:

>>> word = 'the'

>>> poem.find(word)

73

А теперь — последнего:

>>> poem.rfind(word)

214

Сколько раз встречается трехбуквенное сочетание the?

>>> poem.count(word)

3

Являются ли все символы стихотворения буквами или цифрами?

>>> poem.isalnum()

False

Нет, в стихотворении имеются еще и знаки препинания.

Регистр и выравнивание

В этом разделе мы рассмотрим еще несколько примеров использования встроенных функций. В качестве подопытной выберем следующую строку:

>>> setup = 'a duck goes into a bar…'

Удалим символ «.» с обоих концов строки:

>>> setup.strip('.')

'a duck goes into a bar'

Поскольку строки неизменяемы, ни один из этих примеров не изменяет строку setup. Каждый пример просто берет значение переменной setup, выполняет над ним некоторое действие, а затем возвращает результат как новую строку.

Напишем первое слово с большой буквы:

>>> setup.capitalize()

'A duck goes into a bar…'

Напишем все слова с большой буквы:

>>> setup.title()

'A Duck Goes Into A Bar…'

Запишем все слова большими буквами:

>>> setup.upper()

'A DUCK GOES INTO A BAR…'

Запишем все слова маленькими буквами: