Срезы строк
В языке Python можно выделять часть строки ( подстроку). Для этого используется операция получения среза (от англ. slicing)
Общий вид операции получения среза следующий
s[start:stop:step]
Данная команда берет срез из строки s , начиная с символа с индексом start до символа с индексом stop (не включая его) с шагом step (если не указан, то шаг равен 1)
Любая часть в скобках может отсутствовать.
Например,
s1 = s[3:8]
означает, что в строку s1 из строки s копируются символы с 3 по 7 с шагом 1.
Можно брать отрицательные индексы, тогда отсчет ведется с конца строки.
s = "0123456789"
s1 = s[-7:-2] # s1="34567"
Если start не указан, считается, что он равен нулю (то есть берем с начала строки). Если не указан stop, то срез берется до конца строки.
s = "0123456789"
s1 = s[:4] # s1="0123"
s2 = s[-4:] # s2="6789"
Вот так легко можно сделать реверс строки:
s = "0123456789"
s1 = s[::-1] # s1="9876543210"
Все символы строки перебираются с шагом -1, это означает, что символы будут перебираться с конца. Задействована вся строка, потому что не указаны начальный и конечный индексы.
|
Удаление и вставка
Чтобы удалить часть строки, нужно составить новую строку, объединив части исходной строки до и после удаляемого участка.
s = "0123456789"
s1 = s[:3]+s[9:] # s1="0129"
С помощью срезов и сцепления строк можно вставить подстроку внутрь строки.
s = "0123456789"
s1 = s[:3]+"ABC"+s[3:] # s1="012ABC3456789"
|
Методы работы со строками
В Python существует множество методов (готовых функций) для работы со строками. Многие из них вызываются с помощью точечной нотации и называются методами. Полный список методов работы со строками можно найти в Интернете.
Познакомимся с некоторыми из них.
s = "aAbBcC"
sUp = s.upper() # sUp = "AABBCC" - метод, который переводит
# каждый символ строки в верхний регистр
sLow = s.lower() # sLow = "aabbcc" - метод, который переводит
# каждый символ строки в нижний регистр
Слева от точки записывается имя строки (или сама строка в кавычках), к которой нужно применить метод, а справа от точки - название метода. Метод всегда записывается с круглыми скобками. Внутри скобок могут идти какие-либо параметры, если они необходимы.
Ранее мы уже применяли метод работы со строками, когда выводили данные на экран в определенном формате - метод format()
a = 4
b = 5
print("{}+{}={}".format(a,b,a+b)) # 4+5=9
Еще один полезный метод isdigit() - метод проверки, все ли символы строки цифры, он возвращает логическое значение (True или False).
s = "ab1c"
print(s.isdigit()) #False
s = "123"
print(s.isdigit()) #True
Методы isupper() и islower() позволяют проверить состоит строка только из заглавных ( isupper() ) или строчных букв ( islower() ).
Полезный метод strip() позволяет удалить пробелы в начале и в конце строки
s = " ab 1c "
print('s=', s.strip()) # s=ab 1c
|
Поиск в строке
Чтобы в Python выполнить поиск в строке, используют метод find() .
Он имеет три формы и возвращает индекс 1-го вхождения подстроки в строку:
1) find(str) - поиск подстроки str производится с начала строки и до её конца;
2) find(str, start) - с помощью параметра start задаётся начальный индекс, и именно с него и выполняется поиск;
3) find(str, start, end) - посредством параметра end задаётся конечный индекс, поиск выполняется до него.
Когда подстрока не найдена, метод возвращает -1:
welcome = "Hello world! Goodbye world!"
index = welcome.find("wor")
print(index) # 6
# ищем с 10-го по 15-й индекс
index = welcome.find("wor", 10, 15)
print(index) # -1
Поиск можно осуществлять с конца строки. Для этого используется метод rfind() (от англ. reverse find) - возвращает индекс последнего вхождения подстроки в строку.
Обратите внимание: данные методы не ищут количество вхождений, а всего лишь определяют, есть ли такая подстрока в строке или нет.
|
Замена подстрок в строке
Чтобы в Python заменить в строке одну подстроку на другую, применяют метод replace() :
replace(old, new) - подстрока old заменяется на new ;
replace(old, new, num) - параметр num показывает, сколько вхождений подстроки old требуется заменить на new .
Пример
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
|