Символьные строки (продолжение)

10.05.2023 0 Автор : Марина Николаевна
Символьные строки (продолжение)

Сисвольные строки. Строка в языке Python относится к типу str. Символьная строка — это последовательность символов, которая рассматривается как единый объект.

Срезы

Для того, чтобы выделить часть строки (подстроку) , в языке Python применяется операция получения среза. Например, s[3:8] означает «символы строки s c  ретьего по седьмой» (то есть  до 8-го, не включая его). Следующий фрагмент копирует в строку sMiddle символы строки s с 3-го по 7-й (всего 5 символов):

s = "0123456789"
sMiddle = s [3: 8]     #sMiddle = "34567"

Можно  использовать и отрицательные индексы —  в этом случае отсчет идет с конца строки:

sMiddle = s [-7:-2]   #sMiddle = "34567"

Для получения «нормальной» позиции символа в строке к отрицательному значению добавляется длина строки. Например, второй индекс «-2». Это означает, что  последние два символа не входят в срез.

Если первый индекс не указан, считается, что он равен нулю (берем начало строки), а если не указан второй индекс, то в срез включаются все символы до конца строки. Например:

s = "0123456789"
sFirst = s[:4]    #sFirst = "0123"
sLast = s [-4:]    #sLast = "6789"

Срезы позволяют легко выполнить реверс строки (развернуть ее наоборот):

sReversed = s [::-1]

так как  начальный и конечный индексы элементов строки не указаны, задействована вся строка.  число -1 означает шаг изменения индекса и говорит о том, что все символы перебираются в обратном порядке.

Удаление и вставка

Для удаления части строки нужно составить новую строку, объединив части исходной строки до и после удаляемого участка:

s = "0123456789"
sEnds = s[:3] + s [9:]   #sEnd = "0129"

Срез s [:3 ] означает «от начала строки до символа s [3], не включая его», а запись s [9:] — «все символы, начиная с s [ 9 ] до конца строки». Таким образом, в переменной sEnds остается значение «0129».

С помощью срезов и сцепления строк можно также вставить новый фрагмент внутрь строки:

s = "0123456789"
sEnds = s[:3] + "ABC+ s [3:]   #sABC= "012 ABC3456789"

Встроенные методы

В Python существует множество встроенных подпрограмм  для работы  с символьными строками. Многие из них вызываются с помощью точечной записи, они называются методами обработки строк.

Например, методы upper и  lower позволяют перевести строку соответственно  в верхний и нижний регистры:

s =  "aAbBcC"
sUP = s.upper()     # sUp = "AABBCC"
sLow = s.lower()    # sLow = "aabbcc"

Слева от точки записывается имя строки (или сама строка в кавычках), к которой нужно применить метод, а справа от точки — название метода. Например, возможна такая запись:

sWow = "Wow!".upper(  # "WOW")

Здесь метод upper применяется к строке «Wow».

Методы строк уже использовались, когда выводили данные на экран с помощью метода format:

a = 5
b = 4
print ("{} + {} = {}". format (a,b,a+b))

Еще один метод, isdigit,  проверяет, все ли символы строки — цифры, и возращает логическое значение:

s = "ab1c"
print (s.isdigit ())     # False
s = "123"
print (s.isdigit ())    # True

Полезный метод strip (по-английски — лишать) удаляет пробелы в начале и в конце строки:

sRaw = "Python & C++"
sClear = sRaw.strip()   #sClear = "Python & C++"

Этот метод удобно использовать для обработки ввода пользователя, когда пробелы в начале и в конце строки не нужны.

Существуют и другие встроенные методы обработки строк.

Поиск в символьных строках

В Python существует метод для поиска подстроки (и отдельного символа) в символьной строке, он называется find (по-английски — найти). В скобках нужно указать образец для поиска, это может быть один символ или символьная строка:

s = "Здесь был Вася."
n = s.find ("c")     # n = 3
if n>= 0:
    print ("Номер символа", n)
else:
    print ("Символ не найден.")

Метод find возвращает целое число — индекс символа, с которого начинается образец (буква «с») в строке s. Если образец в строке встречается несколько раз, функция находит первый из них. В рассмотренном примере в переменную n будет записано число 3. Если образец не найден, функция возвращает — 1.

Аналогичный метод rfind (от английского reverse find — искать в обратную сторону) ищет последнее вхождение образца в строку. Для той же строки s, что и в предыдущем примере, метод rfind вернет 12 (индекс последней буквы «с»):

s = "Здесь был Вася."
n = s.rfind ("c")    # n = 12

Продолжение темы по ссылке.