Рассмотрим основные методы строк, которые мы можем применить в приложениях:
- isalpha(): возвращает True, если строка состоит только из алфавитных символов
- islower(): возвращает True, если строка состоит только из символов в нижнем регистре
- isupper(): возвращает True, если все символы строки в верхнем регистре
- isdigit(): возвращает True, если все символы строки — цифры
- isnumeric(): возвращает True, если строка представляет собой число
- startswith(str): возвращает True, если строка начинается с подстроки str
- endswith(str): возвращает True, если строка заканчивается на подстроку str
- lower(): переводит строку в нижний регистр
- upper(): переводит строку в вехний регистр
- title(): начальные символы всех слов в строке переводятся в верхний регистр
- capitalize(): переводит в верхний регистр первую букву только самого первого слова строки
- lstrip(): удаляет начальные пробелы из строки
- rstrip(): удаляет конечные пробелы из строки
- strip(): удаляет начальные и конечные пробелы из строки
- ljust(width): если длина строки меньше параметра width, то справа от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по левому краю
- rjust(width): если длина строки меньше параметра width, то слева от строки добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по правому краю
- center(width): если длина строки меньше параметра width, то слева и справа от строки равномерно добавляются пробелы, чтобы дополнить значение width, а сама строка выравнивается по центру
- find(str[, start [, end]): возвращает индекс подстроки в строке. Если подстрока не найдена, возвращается число -1
- replace(old, new[, num]): заменяет в строке одну подстроку на другую
- split([delimeter[, num]]): разбивает строку на подстроки в зависимости от разделителя
- join(strs): объединяет строки в одну строку, вставляя между ними определенный разделитель
Например, если мы ожидаем ввод с клавиатуры числа, то перед преобразованием введенной строки в число можно проверить, с помощью метода isnumeric() введено ли в действительности число, и если так, то выполнить операцию преобразования:
| 1 2 3 4 | string = input("Введите число: ")if string.isnumeric():number = int(string)print(number) |
Проверка, начинается или оканчивается строка на определенную подстроку:
| 1 2 3 4 | file_name = "hello.py"starts_with_hello = file_name.startswith("hello") # Trueends_with_exe = file_name.endswith("exe") # False |
Удаление пробелов в начале и в конце строки:
| 1 2 3 | string = " hello world! "string = string.strip()print(string) # hello world! |
Дополнение строки пробелами и выравнивание:
| 1 2 | print("iPhone 7:", "52000".rjust(10))print("Huawei P10:", "36000".rjust(10)) |
Консольный вывод:
iPhone 7: 52000 Huawei P10: 36000
Поиск в строке
Для поиска подстроки в строке в Python применяется метод find(), который возвращает индекс первого вхождения подстроки в строку и имеет три формы:
find(str): поиск подстроки str ведется с начала строки до ее концаfind(str, start): параметр start задает начальный индекс, с которого будет производиться поискfind(str, start, end): параметр end задает конечный индекс, до которого будет идти поиск
Если подстрока не найдена, метод возвращает -1:
| 1 2 3 4 5 6 7 8 9 10 11 | welcome = "Hello world! Goodbye world!"index = welcome.find("wor")print(index) # 6# поиск с 10-го индексаindex = welcome.find("wor",10)print(index) # 21# поиск с 10 по 15 индексindex = welcome.find("wor",10,15)print(index) # -1 |
Замена в строке
Для замены в строке одной подстроки на другую применяется метод replace():
replace(old, new): заменяет подстроку old на newreplace(old, new, num): параметр num указывает, сколько вхождений подстроки old надо заменить на new
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | phone = "+1-234-567-89-10" # замена дефисов на пробелedited_phone = phone.replace("-", " ")print(edited_phone) # +1 234 567 89 10 # удаление дефисовedited_phone = phone.replace("-", "")print(edited_phone) # +12345678910# замена только первого дефисаedited_phone = phone.replace("-", "", 1)print(edited_phone) # +1234-567-89-10 |
Разделение на подстроки
Метод split() разбивает строку на список подстрок в зависимости от разделителя. В качестве разделителя может выступать любой символ или последовательность символов. Данный метод имеет следующие формы:
split(): в качестве разделителя используется пробелsplit(delimeter): в качестве разделителя используется delimetersplit(delimeter, num): параметр num указывает, сколько вхождений delimeter используется для разделения. Оставшаяся часть строки добавляется в список без разделения на подстроки
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | text = "Это был огромный, в два обхвата дуб, с обломанными ветвями и с обломанной корой"# разделение по пробеламsplitted_text = text.split()print(splitted_text)print(splitted_text[6]) # дуб,# разбиение по запятымsplitted_text = text.split(",")print(splitted_text)print(splitted_text[1]) # в два обхвата дуб # разбиение по первым пяти пробеламsplitted_text = text.split(" ", 5)print(splitted_text) print(splitted_text[5]) # обхвата дуб, с обломанными ветвями и с обломанной корой |
Соединение строк
При рассмотрении простейших операций со строками было показано, как объединять строки с помощью операции сложения. Другую возможность для соединения строк представляет метод join(): он объединяет список строк. Причем текущая строка, у которой вызывается данный метод, используется в качестве разделителя:
| 1 2 3 4 5 6 7 8 9 | words = ["Let", "me", "speak", "from", "my", "heart", "in", "English"] # разделитель - пробелsentence = " ".join(words)print(sentence) # Let me speak from my heart in English # разделитель - вертикальная чертаsentence = " | ".join(words)print(sentence) # Let | me | speak | from | my | heart | in | English |
Вместо списка в метод join можно передать простую строку, тогда разделитель будет вставляться между символами этой строки:
| 1 2 3 | word = "hello"joined_word = "|".join(word)print(joined_word) # h|e|l|l|o |