И это еще не все! Если задать отрицательный шаг, любезный Python будет двигаться в обратную сторону. В следующем примере движение начинается с конца и заканчивается в начале, ни один символ не пропущен:
>>> letters[-1::-1]
'zyxwvutsrqponmlkjihgfedcba'
Оказывается, можно добиться того же результата, использовав такой пример:
>>> letters[::-1]
'zyxwvutsrqponmlkjihgfedcba'
Операция slice более мягко относится к неправильным смещениям, чем поиск по индексу. Если указать смещение меньшее, чем начало строки, оно будет обрабатываться как 0, а если указать смещение большее, чем конец строки, оно будет обработано как –1. Это показано в следующих примерах.
Начиная с –50-го символа и до конца:
>>> letters[-50:]
'abcdefghijklmnopqrstuvwxyz'
Начиная с –51-го символа и заканчивая –50-м:
>>> letters[-51:-50]
''
От начала до 69-го символа:
>>> letters[:70]
'abcdefghijklmnopqrstuvwxyz'
Начиная с 70-го символа и заканчивая 70-м:
>>> letters[70:71]
''
Получаем длину строки с помощью функции len()
До этого момента мы использовали специальные знаки препинания вроде +, чтобы манипулировать строками. Но существует не так уж много подобных функций. Теперь мы начнем использовать некоторые встроенные
Функция len() подсчитывает символы в строке:
>>> len(letters)
26
>>> empty = ""
>>> len(empty)
0
Вы можете использовать функцию len() и для других типов последовательностей, что показано в главе 3.
Разделяем строку с помощью функции split()
В отличие от функции len() некоторые функции характерны только для строк. Для того чтобы использовать строковую функцию, введите имя строки, точку, имя функции и
Вы можете использовать встроенную функцию 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(): она объединяет список строк в одну строку. Вызов функции выглядит немного запутанно, поскольку сначала вы указываете строку, которая объединяет остальные, а затем — список строк для объединения:
>>> 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 содержит большой набор функций для работы со строками. Рассмотрим принцип работы самых распространенных из них. Объектом для тестов станет следующая строка, содержащая текст бессмертного стихотворения
>>> poem = '''All that doth flow we cannot liquid name
Or else would fire and water be the same;