Рядки

Рядки – це об’єкти, що складаються з послідовності символьних даних. В Python, рядки представлені типом даних str, який зберігає послідовність символів Unicode. Зчитування рядків відбувається за допомоги функції input.

Зазначимо, що в мові Python не має, як такого, символьного типу даних, символ – це рядок довжиною в 1 символ.

Нагадуємо, що рядкові літерали треба укладати в лапки. Можна використовувати лапки одинарні, подвійні або потрійні, при цьому лапки на початку рядка та в його кінці повинні співпадати. Якщо рядок укладений в потрійні лапки, в ньому можна довільно використовувати подвійні лапки чи апострофи.

Для рядків визначені базові операції складання (конкатенація) та операція добутку строки на ціле число (копіювання строк).

Базові операції із рядками.

Конкатенація – складання строк. За допомоги оператора додавання (+) можна об’єднати декілька рядків в один.
Приклад: створити програму, яка буде об’єднувати декілька рядків в один.

  • a = ''Py''
  • b = ''th''
  • c = ''on''
  • print(a+b+c) → 'Python'

Копіювання строк. За допомоги оператора добутку (*) можна створити декілька копій строки.
Приклад: створити програму, яка буде дублювати строку декілька раз.

  • a = ''py.''
  • с = 3
  • print(a*с) → 'py.py.py.'

Перевірка на входження – in, not in. Оператор приналежності in перевіряє чи входить деяка підстрока у дану строку і повертає значення True або False, в залежності від результату.
Приклад: створити програму, яка буде перевіряти чи входить підрядок а в рядок b.

  • print('Вкажіть строго-типізовану мову програмування:')
  • a = input('Python, Java, Pascal')
  • b = 'Pascal – строго типізована мова програмування'
  • if a in b:
    • print('Ви абсолютно праві')
  • else:
    • print('Ви помиляєтесь')

Функції перетворення.

В комп’ютері всю інформацію зберігають у вигляді цифр, для подання символьних даних використовується схема перетворення, яка містить кожен символ з його номером. Таким чином, якщо рядок складається із одного символу, до такого рядка можна застосувати функції перетворення.

Функція chr() – перетворює ціле число на символ.

Функція ord() – перетворює символ на ціле число.

Приклад: створити програму, яка буде виводити літери англійського алфавіту.

  • a = ord('a')
  • z = ord('z')
  • for i in range(a, z+1):
    • print(chr(i), end=' ')

Довжина рядка.

Функция len() – повертає довжину рядка, тобто визначає кількість символів, що містить рядок, включно із пропусками.

Приклад: створити програму, яка буде визначати точну кількість символів в рядку.

  • s = input('введіть рядок: ')
  • print('в рядку «',s,'» знаходиться',len(s),'символів')

Індексація рядків.

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

Для того щоб отримати доступ до окремих символів в рядку треба: вказати ім’я рядка та номер позиції символу в квадратних дужках.

Індексація рядків починається з нуля: у першого символу індекс 0, наступного 1 і так далі, індекс останнього символу – довжина строки мінус один (len(s)-1).

Таким чином окремі символи доступні за індексом наступним чином:

  • s = 'python'
  • print(s[0]) → p
  • print(s[1]) → y
  • print(s[2]) → t
  • print(s[3]) → h
  • print(s[4]) → o
  • print(s[5]) → n

Спроба звернення за індексом більшого ніж len (s) – 1, призводить до помилки IndexError: string index out of range.

Індекси рядків можуть бути вказані і негативними числами. В цьому випадку індексування починається з кінця строки: -1 відноситься до останнього символу, -2 до передостаннього і так далі.

  • s = 'python'
  • print(s[-1]) → n
  • print(s[-2]) → o
  • print(s[-3]) → h
  • print(s[-4]) → t
  • print(s[-5]) → y
  • print(s[-6]) → p

Для будь-якого не порожнього рядка s, код s [len (s) -1] та s [-1] поверне останній символ. Немає індексу, який можна застосувати до порожнього рядка.

Slices – зрізи рядків.

Зріз (slice) – отримання з цього рядка одного символу або деякого фрагмента підрядка або підпослідовності.

В мові Python існує три форми зрізів:

S[i] – повертає один символ із рядка S за індексом [і].

  • s = 'python'
  • print(s[0]) → p

S[a:b] – повертає рядок, який починається з символу а і завершується символом b-1.

  • s = 'python'
  • print(s[0:2]) → py

Можна також використовувати як позитивні, так і негативні індекси в одному зрізі, наприклад S[1:-1] – це рядок без першого і останнього символу (зріз починається з символу з індексом 1 і закінчується індексом -1, не включаючи його).

  • s = 'python'
  • print(s[1:-1]) → ytho

Якщо опустити другий параметр (але поставити двокрапку), то зріз береться до кінця рядка.

  • s = 'python'
  • print(s[2:])→ thon

S[a:b:d] – повертає рядок, що починається із символу з індексом а, в який будуть додані символи із індексами a + d, a+ 2*d … і далі, до символу з індексом b-1.
Приклад: скласти програму, яка з дати народження, що подана у форматі ДД.MM.РРРР буде повертати лише рік народження.

  • data = input('Введіть дату народження у форматі ДД.ММ.РРРР: ')
  • print(data[6:])

Методи.

Метод – це функція, яка застосовується до об’єкта. Метод викликається наступним чином:

Ім’я_об’екту.Ім’я_методу(параметри).

Методи find та rfind.

Метод find() – визначає індекс початкового входження (початкову позицію) символу або символів у зазначеному текстовому рядку з урахуванням регістру, якщо ж підрядок не буде знайдено, то метод поверне значення -1.
Приклад: скласти програму, яка визначить положення підрядка «Python» в текстовому рядку «Programming language Python».

  • s = 'Programming language Python'
  • print(s.find('Python')) → 17
  • print(s.find('python')) → -1

Метод rfind() – визначає індекс останнього входження символу або символів у зазначеному текстовому рядку з урахуванням регістру, якщо ж підрядок не буде знайдено, то метод поверне значення -1. Тобто, пошук починається з кінця рядка.
Приклад: визначити положення останнього пропуску в текстовому рядку «Programming language Python».

  • s = 'Programming language Python'
  • print(s.rfind(' ')) → 20

Метод find або rfind можна викликати із декількома параметрами:

s.find('str', a) – пошук символу або символів ('str') буде відбуватися в зрізі s[а:], тобто від символу з індексом а і до кінця строки s.

  • s = 'Programming language Python'
  • print(s.find('r', 2)) → 4

s.find('str', a, b) – пошук символу або символів ('str') буде відбуватися в зрізі s[а:b], тобто від символу з індексом а і до символу з індексом b-1 в рядку s.

  • s = 'Programming language Python'
  • print(s.find('l')) → 12
  • print(s.find('g', 4, 10)) → -1

Метод replace.

Метод replace() замінює всі входження одного рядка в інший, тобто s.replace(old, new) – замінює в рядку s все входження підрядка old на підрядок new.
Приклад:

  • s = 'Hello'
  • print(s.replace('l', 'L')) → 'HeLLo'

Метод replace може отримувати ще додатковий третій параметр, тобто s.replace(old, new, count), в цьому випадку заміняться лише перші count входження підрядка.
Приклад:

  • s = 'Hello'
  • print(s.replace('l', 'L', 1)) → 'HeLlo'

Метод count.

Метод s.count() – рахує кількість входжень одного рядка в інший рядок з урахуванням регістру, тобто s.count(t) – повертає число входжень рядка t у рядок s.
Приклад:

  • s = 'Hello'
  • print(s.count('l'))→ 2

Якщо вказати три параметра в методі s.count(t, а, b) – буде відбуватися розрахунок входжень рядка t у рядок s у зрізі s[a:b].

Методи зміни регістру рядка.

Метод s.capitalize() – повертає копію рядка s з першим символом, перетвореним у верхній регістр, і іншими символами, перетвореними в нижній регістр, не алфавітні символи не змінюються.
Приклад:

  • s = 'python'
  • print(s.capitalize()) → 'Python'

Метод s.lower() – повертає копію рядка s з усіма символами літер, перетвореними в нижній регістр, не алфавітні символи не змінюються.
Приклад:

  • s = 'PYTHON'
  • print(s.lower()) → 'python'

Метод s.upper() – повертає копію рядка s з усіма символами літер, перетвореними в верхній регістр, не алфавітні символи не змінюються.
Приклад:

  • s = 'python'
  • print(s.upper()) → 'PYTHON'

Метод s.title() – повертає копію рядка s в якій перша буква кожного слова перетворюється в верхній регістр, а інші літери – в нижній регістр.
Приклад:

  • s = 'programming language python'
  • print(s.title()) → 'Programming Language Python'

Класифікація рядків.

Метод s.isalpha() – повертає True, якщо рядок s не порожній, а всі його символи літери. В іншому випадку повертає False.

Метод s.isdigit() – повертає True коли рядок s не порожній, а всі його символи є цифрами. В іншому випадку повертає False.

Метод s.isalnum() – повертає True, якщо рядок s не порожній, а всі його символи є літери з цифрами. В іншому випадку повертає False.

Метод s.isupper() – повертає True, якщо рядок s не порожній, а всі його символи є прописними (великими). В іншому випадку повертає False.

Метод s.islower() повертає True, якщо рядок s не порожній, а всі його символи є строковими (малими). В іншому випадку повертає False.

Приклад: скласти програму, яка буде визначати чи є рядок, що вводить користувач з клавіатури числом, літерою або це рядок який містить і цифри і літери.

  • s = input('Введіть будь-який рядок: ')
  • if s.isalpha():
    • print('Цей рядок містить лише літери')
  • elif s.isdigit():
    • print('Цей рядок містить лише цифри')
  • elif s.isalnum():
    • print('Цей рядок містить літери та цифри')
  • else:
    • print('Цей рядок містить інші символи')