Срезы строк

В языке 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