Методы работы со строками

Рассмотрим основные методы работы со строками.

1. Метод иррег().

Синтаксис метода: 8й*ока.иррег(). Преобразует все символы строки к верхнему регистру. Например,

Б^ока^'РуШоп"

пеУ81:г=81:гока.иррег()

ргт<:(пе?81г)

2. Метод 1олтег().

Синтаксис метода: 81гока.1оуег(). Преобразует все символы строки к нижнему регистру. Например,

ви-ока^'РУТНОЫ"

пе?81:г=81тока.1о?ег()

рГШ1(пе?81г)

3. Метод влтарсавеО.

Синтаксис метода: 81гока.8уарса8е(). Преобразует все символы строки, записанные в нижнем регистре - в верхний и наоборот (рис. 99). Например,

зйюка-'РуТЬоМ"

пе?81г=81тока.8?арса8е()

рГШ1(пе?81г)

Python 3.5.1 Shell

File Edit SheN Debug Options Window Help

Pychon 3.5.1 (v3.5.1:37a07cee5969, De c 6 2015, 01:38:48) [MSC v.1900 32 b it (Intel)] on Win32

Type "copyright", "credits" or "licen se()" for more information.

»>

_

RESTART: C:/изегз/Сергей/AppData/Loc al/Programs/Python/Python35-32/Мои np оекты/Работа со строками.py pYtHOn »>

Ln: 6 Col

Рис. 99. Результат работы программы

4. Метод сарКаїігеО.

Синтаксис метода: 8Ігока.сарКа1І2е(). Преобразует первую букву в строке в верхний регистр. Например,

8Ігока="ру11юп"

пеУ8Іт=8Ігока.сарИ:а1І2еО

РГІПІ(ПЄШ8ІГ)

5. Метод title().

Синтаксис метода: stroka.title(). Преобразует все первые буквы в строке в верхний регистр (рис. 100). Например,

stroka='^3biK программирования python"

newstr=stroka.title()

prlnt(newstr)

Результат работы программы

Рис. 100. Результат работы программы

6. Метод startswith().

Синтаксис метода: stroka.startswith(podstroka). Проверяет, начинается ли строка stroka с указанной подстроки podstroka. Например, в данном примере проверяется условие наличия подстроки "Язы" в начале строки "Язык программирования Python".

stroka='^3biK программирования Python" podstr-'Язы"

n=stroka.startswith(podstr)

prlnt(n)

Результатом данного кода будет значение True.

7. Метод endswith().

Синтаксис метода: stroka.endswith (podstroka). Проверяет, заканчивается ли строка stroka указанной подстрокой podstroka. Например, в данном примере проверяется условие наличия подстроки "thon" в начале строки "Язык программирования Python".

stroka='^3biK программирования Python"

podstr-'thon"

n=stroka.endswith(podstr)

prlnt(n)

Результатом данного кода будет значение True.

8. Метод replace().

Синтаксис метода: stroka.replace(old, new), где old - подстрока для замены, new - новая подстрока. Метод находит и заменяет в строке stroka подстроку old подстрокой new. Например, в данном примере оператор stroka = stroka.Replace ("еще","вот") возвратит строку "Эх раз, вот раз, вот много, много раз".

stroka= "Эх раз, еще раз, еще много, много раз"

stroka=stroka.replace("eiHe","BOT")

print(stroka)

9. Метод rfind().

Синтаксис метода: stroka.rfind(podstr), где podstr - подстрока. Метод возвращает позицию последнего вхождения подстроки в строку. Если подстрока не обнаружена, то возвращается значение -1. После параметра podstr могут быть указаны начальная позиция и конечная позиции в строке, где следует искать подстроку. Эти параметры необязательны, и если отсутствует начальная позиция, то поиск будет осуществлен с начала строки. Так, в нижеприведенном примере, последнее вхождение подстроки "еще" будет зафиксировано на позиции 17. Строка, напомним, индексируется с нуля, пробелы и знаки препинания являются символами.

stroka= "Эх раз, еще раз, еще много, много раз"

stroka=stroka.rfind("eHi,e")

print(stroka)

10. Метод find().

Синтаксис метода: stroka.flnd(podstr), где podstr - подстрока. В отличие от предыдущего метода, метод find() возвращает номер позиции, с которого начинается вхождение подстроки в строку. Если подстрока не обнаружена, то возвращается значение -1. Соответственно, если изменить предыдущую программу и вместо метода rfind() использовать метод find(), то первое вхождение подстроки "еще" в строку "Эх раз, еще раз, еще много, много раз" будет начинаться на позиции 8.

11. Метод count().

Синтаксис метода: stroka.count(podstr), где podstr - подстрока. Метод возвращает количество вхождений подстроки podstr в строку stroka. Таким образом, в нижеследующем примере ответом, выведенным на экран оператором print, будет число 2, поскольку подстрока "еще" входит два раза в строку "Эх раз, еще раз, еще много, много раз".

stroka= "Эх раз, еще раз, еще много, много раз"

stroka=stroka.count("eHje")

print(stroka)

12. Метод strip().

Синтаксис метода: stroka.strip(). Метод удаляет начальные и конечные пробелы в строке stroka. В нижеприведенном примере в исходной строке присутствуют пробелы в начале и в конце строки. На рис. 101 представлен результат выполнения программы, где пробелы с помощью метода stripO удалены из исходной строки.

stroka= " Эх раз, еще раз, еще много, много раз "

stroka=stroka.strip()

print(stroka)

Uamr

[_!& Python 3.5.1 Shell

File Edit Shejl Debug Options Window Help

Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01 :38:48) [MSC v.1900 32 bit (Intel)] on Win32

I Type "copyright", "credits" or "license()" for mor e information.

»>

RESTART: C:UsersCepre?iAppDataLocalProgramsP ythonPython35-32MoM проектыРабота со строками.p У

Эх раз, еще раз, еще много, много раз »>

Ln:6 Col: 4

Рис. 101. В исходной строке слева и справа удалены пробельные символы

13.Методы lstrip() и rstrip().

Их синтаксис и действие аналогичны рассмотренному методу strip(), с той разницей, что метод lstrip() удаляет символы пробела слева от начала исходной строки, а метод rstrip() - в конце исходной строки.

Отметим, что с помощью методов strip(), rstrip() и lstrip() можно удалять не только пробелы. Так, если в качестве параметра одного из методов указать символ или последовательность символов, то произойдет его (их) удаление. Например, в нижеследующем примере мы указали в качестве параметра в методе strip() символы "Эх". Соответственно, метод возвратит исходную строку, но уже без указанных символов. Подобная ситуация показана на рис. 102.

stroka= "Эх раз, еще раз, еще много, много раз"

stroka=stroka.strip("3x")

print(stroka)

f

Python 3.5.1 Shell

Результат работы программы

Рис. 102. Результат работы программы

14. Метод 8р1к().

Синтаксис метода: 51гока.§р1К()> Метод разделяет строку на подстроки и добавляет их в список. Если в качестве параметра присутствует разделитель, то строка будет разбита на подстроки в соответствии с указанным разделителем. В случае его отсутствия разделителем считается пробел. В коде, представленном в листинге 81, исходная строка методом split() преобразована в список, разделителем служит пробел. Далее уже над списком выполняется списочный метод remove(), который удаляет тот элемент списка, который вводит пользователь с клавиатуры.

Листинг 81

stroka= "Эх раз, еще раз, еще много, много раз"

spisok=stroka.split(" ")

print(spisok)

е1етеп1=три<:("пВведите элемент списка, который хотите удалить ") for i in spisok:

if element in spisok:

spisok.remove(element)

print(spisok)_

Результат работы программы представлен на рис. 103. Следует обратить внимание на то, что при формировании списка разделителем был пробел. Соответственно, в исходном списке элемент списка 'раз,' входит в него два раза, а элемент списка 'раз', входит в него один раз. При запросе удаляемого элемента, мы ввели 'раз,', а не 'раз', поэтому в результирующем списке слово 'раз' присутствует.

Удалены два элемента списка 'раз,'

Рис. 103. Удалены два элемента списка 'раз,'

15. Метод ]от().

Синтаксис метода: разделитель^от^р^ок), где эрЬок - список или кортеж. Еще одним способом преобразования строки в список является использование функции Неф, а обратное преобразование осуществляется методом ]от(). Такие преобразования необходимы для того, чтобы изменить элемент строки по индексу, поскольку изначально строки неизменяемы.

В нижеприведенном примере (листинг 82) из исходной строки с помощью функции и$1:() происходит формирование списка. Попробуем заменить элемент исходного списка на введенный с клавиатуры и для этого осуществляем соответствующие запросы с помощью функции input(). Вычисляем длину списка с помощью функции 1еп() и организуем просмотр списка с помощью оператора цикла for. Если очередной элемент списка будет равен введенному элементу, то произойдет замена исходного элемента списка element на элемент elementl. Затем, используя метод join(), преобразуем список в строку и выводим ее на экран (рис. 104).

Листинг 82

stroka= "Эх раз, еще раз, еще много, много раз"

spisok=list(stroka)

print(spisok)

element=input(" BBeflHTe элемент списка, который хотите заменить ") element 1 =три!("пВведите элемент, на который хотите заменить ") n=len(spisok) for i in range(0,n):

if spisok[i]==element: spisok[i]=elementl strokal -'".join(spisok)

print(strokal)_

Python 3.5.1 Shell

<=>

File Edit Shell Debug Options Window Help

Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Int ^ el)] on Win32

Type "copyright", "credits" or "license()" for more information.

»>

RESTART: C:UsersCepre^AppDataLocalProgramsPythonPython35-32Mon проектыР абота со строками.py

[1Э *, 1 х', 1 1 , 'p'f 1 э.1, 1 з1, 1, 1, 1 1 г 's', 'щ1, 's', 1 1, 'р'/ ' з *, ' з1,

' 'е', 'щ', 'е', ' ', 'м', 'н', 'о', 'г', 'о', ' ', 'м', 'н', 'о', 'г', '

О', 1 ', 'Р', 'а', 'з*]

Звените элемент списка, который хотите заменить а

Введите элемент, на который хотите заменить я Эх ряз, еще ряз, еще много, много ряз

»> I

Ln: 11 Col: 4

Рис. 104. Замена элемента списка 'а' на 'я'

Базовые алгоритмы обработки строк

Вышеприведенные примеры с использованием функций и методов познакомили вас с возможностями обработки строк и символов в Python. При решении задач следует научиться использовать в совокупности простые приемы и методы обработки строк (назовем их базовыми алгоритмами), среди которых можно выделить следующие:

  • 1. Определение количества символов.
  • 2. Замена символов в строке.
  • 3. Удаление символа в строке.
  • 4. Вставка символа в строку.
  • 5. Анализ символа на принадлежность к группе.
  • 6. Обращение строки.
  • 7. Алфавитная выборка.
  • 8. Срезы строк.

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

Определение количества символов

Задача. Пользователь вводит исходную строку stroka и символ simvol. Подсчитайте, сколько раз заданный символ встречается в исходной строке.

Комментарий. Первоначально после обнуления ячейки к, которая будет играть роль счетчика символов, мы преобразуем все символы исходной строки в строчные буквы методом lower(). Затем в цикле происходит сравнение текущего символа строки spisok[i] с искомым символом simvol. Параметр цикла i будет изменяться от 0 (начало строки) до конца строки (за это отвечает ячейка п, в которой уже находится значение функции len(spisok)). Подсчет количества найденных символов в строке обеспечивает оператор к+=1.

Ниже приведен код программы, отвечающий за решение задачи.

Листинг 83

к=0

stroka=input(" BBeflHTe строку ") stroka 1 =stroka.lower() spisok=list(stroka 1)

simvol=input(" BBeflHTe символ, количество которого вы хотите найти ")

n=len(spisok) for i in range(0,n): if spisok[i]==simvol: k+= 1

ргт1:("пКоличество символов равно", k)_

Результат выполнения программы представлен на рис. 105.

Количество символов я в исходной строке равно двум

Рис Л 05. Количество символов я в исходной строке равно двум

Замена символов в строке

Задача. Пользователь вводит исходную строку row и символ simv. Замените пробелы в исходной строке указанным символом.

Комментарий. Ранее при объяснении работы метода join() была решена подобная задача. В листинге 84 приведен код, в котором обрабатываемая строка не фиксирована, а вводится с клавиатуры. Методы ее обработки остались прежними. Заметим, что подобную задачу можно решить и с применением метода replace().

Листинг 84

stroka=input(" BBeflHTe строку ") stroka 1 =stroka.lower() spisok=list(stroka 1)

element=input(" BBeflHTe элемент, который хотите заменить ") element 1=три1("пВведите элемент, на который хотите заменить ") n=len(strokal) for i in range(0,n): if spisok[i]==element: spisok[i]=element 1 stroka 1 =" ". j oin(spisok)

print(strokal)_

Удаление символов в строке

Задача. Пользователь вводит исходную строку row и символ simv. Удалите в исходной строке указанный пользователем символ.

Комментарий. Способ основан на применении метода replace(). Осуществляем ввод символа (листинг 85), который хотим удалить, а затем используем его в качестве параметра в методе replace(). Второй параметр в методе делаем равным пустым кавычкам. Результат работы программы показан на рис. 106.

Листинг 85

stroka=input(" BBeflHTe строку ")

element=input(" BBeflHTe элемент, который хотите удалить ") stroka=stroka.replace(element,"")

print(stroka)_

Символ ш удален из исходной строки

Рис. 106. Символ ш удален из исходной строки

Вставка символа в строку

Задача. Пользователь вводит исходную строку row. В исходную строку необходимо добавить символ simvoll после символа simvol, который пользователь вводит с клавиатуры.

Комментарий. Вставка подстроки в заданную позицию осуществляется с помощью оператора spisok.insert(i+l,elementl), предварительно мы преобразовали строку в список с помощью функции list. Изменение параметра i в цикле с оператором for обеспечивает продвижение по строке. Если очередной элемент списка равен найденному элементу (if spisok[i]==element), то применяется метод insert. В конце программы, используя метод join, делаем обратное преобразование: список превращается в строку, которая и выводится на экран. Напоминаем, что при работе со строками надо учитывать, в каком состоянии находится символ - в верхнем или нижнем регистре.

В листинге 86 приведен код программы, отвечающий за решение задачи.

Листинг 86

stroka=input(" BBenHTe строку ")

print(stroka)

spisok=list(stroka)

е1етеп1=три^"пВведите символ после которого вы хотите вставить новый символ ")

element 1=три^"пВведите символ который вы хотите вставить ")

n=len(stroka)

for i in range(0,n):

if spisok[i1==element:_

spisok.insert(i+1,element 1) stroka="".join(spisok)

print(stroka)_

Результат выполнения программы представлен на рис. 107.

В исходную строку после заявленного символа "в" добавляется символ ’’я"

Рис. 107. В исходную строку после заявленного символа "в" добавляется символ ’’я"

Анализ символа на принадлежность к группе

Задача. Пользователь вводит исходную строку row. Определите, сколько в ней символов simv_l и simv_2, которые пользователь вводит с клавиатуры.

Комментарий. В данной программе, преобразовав строку символов в список, вводим два символа, количество которых мы хотим обнаружить в исходной строке. В цикле с оператором for сравниваем каждый элемент списка с введенными пользователем символами, и если условие истинно, счетчик увеличивается на единицу. Ниже приведен код программы, отвечающий за решение задачи.

Листинг 87

stroka=input(" BBeflHTe строку ")

print(stroka)

spisok=list(stroka)

k=0

element=input(" BBeflHTe символ, количество которого вы хотите найти ")

element 1=н1ри1:("пВведите второй символ, количество которого вы хотите найти ") n=len(stroka) for i in range(0,n):

if (spisok[i]=element) or (spisok[i]==elementl): k+= 1

print(" Bcero найденных символов: ", k)_

В исходной строке осуществлен подсчет символов "в" и "м"

Рис.108. В исходной строке осуществлен подсчет символов "в" и "м"

Обращение строки

Задача. Пользователь вводит строку stroka. Переверните ее (т. е. запишите наоборот).

Комментарий. При решении данной задачи можно было бы воспользоваться методом reverse для обработки списков, но алгоритм работы данной программы основан на поочередной выборке символов из заданной строки и перемещение их в начало новой строки. Вспомогательная строка tmp изначально пуста. С помощью организации цикла просматриваем символы исходной строки от первого к последнему. Каждый из них присоединяется к началу уже накопленной строки, оператором tmp=stroka[i]+tmp. В листинге 88 приведен код, отвечающий за решение задачи.

Листинг 88

81гока=три1("пВведите строку ") print(stroka) tmp="" n=len(stroka) for i in range(0,n): tmp = stroka [i] + tmp

print(tmp)_

Результат выполнения программы представлен на рис. 109.

Г

j>y Python 3.5.1 Shell

File Edit Shell Debug Options Window Help

Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01: 38:43) [MSC v.1900 32 bit (Intel)] on Win32 Type "copyright”, "credits” or "license()” for more information.

»>

RESTART: C:UsersCepreMAppDataLocalFrogramsPy thonPython35-32Mon npoeKThiPa6oTa co CTpoKaMH.py

Введите строку мана пала иаксик кискам апап амам

мама папа максик

>»1

Ln: 9 Col

Рис. 109. Обращенная строка

Алфавитная выборка

Задача. Имеется заранее заданный алфавит. Пользователь вводит строку stroka. Выберите из строки символы, используемые в алфавите, и выведите их на экран.

Комментарий. При решении данной задачи мы познакомимся с таким понятием, как «константа» в Python. Переменная, набранная прописными буквами, в Python называется константой. Существует особенность применения констант в изучаемом нами языке программирования: в отличие от некоторых языков программирования константы в Python можно изменять. Поэтому, создав константу, пользователь должен контролировать ее неизменность.

Итак, мы имеем некий набор символов, условно называемый алфавитом, который хранится в константе ALFAVIT. Пользователь вводит строку, и для каждого символа строки (for letter in stroka:) мы осуществляем проверку условия. Если символ есть в алфавите (if letter in ALFAVIT:), то в переменной tmp накапливаем результирующие символы оператором tmp+=letter.

В листинге 89 приведен код, отвечающий за решение задачи.

Листинг 89

АЬРАУ1Т="абвгдежзиклмн" stroka=input(" BBeflHTe строку ") print(stroka) tmp-'"

for letter in stroka: if letter in ALFAVIT: tmp += letter

print(tmp)_

?

г-;-

[? Python 3.5.1 Shell

File Edit SheN Debug Options Window Help

Python 3.5.1 (v3.5.1:37а07сее5Э69, Dec 6 2015, 01:38: 48) [MSC v.1900 32 bit (Intel)] on Win32 Type "copyright", "credits" or "license()" for more in formation.

»>

RESTART: C:UsersCepreiiAppDataLocalProgramsPytho nPython35-32Mon проектыРабота со строками.py

Введите строку мама папа бабушка дедушка мама папа бабушка дедушка мамааабабкадедка

Ln: 9 Col:

>»1

L

Рис. 110. Выполнена алфавитная выборка

Срезы строк

Задача. Из исходной строки получите символы, расположенные между заданными начальным и конечным значениями.

Комментарий. При изучении темы «Работа с кортежами», мы уже познакомились с понятием «срез» и говорили о том, что срез кортежа получается в результате вывода элементов кортежа, находящихся между заранее заданными начальной (а) и конечной (Ь) позициями элементов. Механизм работы со срезами строк очень похож на принципы работы со срезами кортежей. Применяя срезы к строкам, мы можем выбрать из них любой символ или последовательность расположенных подряд символов. Для этого нам понадобятся начальная и конечная позиции, которые будут обозначать границы среза. Код, отвечающий за правильность работы программы, представлен в листинге 90.

Листинг 90

81гока=три1("пВведите строку. Для выхода нажмите Enter, не вводя

значение среза ")

print(stroka)

flag=None

while flag

flag=input(" BBeflHTe начало среза, для выхода нажмите Enter ")

if flag:

flag=int(flag)

kon=int(input(" BBeflmre конец среза ")) print(stroka[flag:kon])

щри1("пНажмите Enter, чтобы выйти из программы ")_

Python 3.5.1 Shell File Edit SheM Debug Options Window Help

С у UUUU J ? J ? J. UCU U ?.J ±>J r Ui ? JU ? 1U| V . 1JUU IjXl, 1Ш.СХ / j UU WJ.UO^

Type "copyright", "credits" or "license()" for more information. —

»>

RESTART: C:UsersCepreiiAppDataLocalProgramsPythonPython35-32Mott проектыХРабота со строка ми.ру

I

Звените строку. Для выхода нажмите Enter, не вводя значение среза. мама папа бабушка дедушка

мама папа бабушка дедушка

Зведите начало среза 4

Введите конец среза 17 папа бабушка

Зведите начало среза

Нажмите Enter, чтобы выйти из программы

»> ?

Ln: 17 Col: 4

Рис. 111. Срез с начальной и конечной позицией stroka[4:17]

 
< Пред   СОДЕРЖАНИЕ     След >