Рядки. Функції та методи рядків
Як видно з прикладу, Python можливий і доступ за негативним індексом, при цьому відлік йде від кінця рядка.
Оператор вилучення зрізу: [X: Y]. X – початок зрізу, а Y – закінчення; символ з номером Y в зріз не входить. За замовчуванням перший індекс дорівнює 0, а другий довжині рядка.
>>> s = 'spameggs' >>> s[3:5] 'me' >>> s[2:-2] 'ameg' >>> s[:6] 'spameg' >>> s[1 :] 'pameggs' >>> s[:] 'spameggs'
Крім того, можна задати крок, з яким потрібно витягувати зріз.
>>> s[::-1] 'sggemaps' >>> s[3:5:-1] '' >>> s[2::2] 'aeg'
Інші функції та методи рядків
При викликі методів необхідно пам'ятати, що рядки в Python відносяться до категорії незмінних послідовностей, тобто всі функції та методи можуть лише створювати новий рядок.
>>> s = 'spam' >>> s[1] = 'b' Traceback (найменший останній час): File "", line 1, in s[1] = 'b' TypeError: 'str' object does not support item assignment >>> s = s[0] + 'b' + s[2:] >>> s 'sbam'
Тому всі рядкові методи повертають новий рядок, який потім слід присвоїти змінній.
Таблиця «Функції та методи рядків»
| Функція чи метод | Призначення |
|---|---|
| S = 'str'; S = "str"; S = '''str'''; S = "str""" | Літерали рядків |
| S = "s\np\ta\nbbb" | Екрановані послідовності |
| S = r"C:\temp\new" | Неформатовані рядки (пригнічують екранування) |
| S = b"byte" | Рядок байтів |
| S1 + S2 | Конкатенація (складання рядків) |
| S1*3 | Повторення рядка |
| S[i] | Звернення за індексом |
| S[i:j:step] | Вилучення зрізу |
| len(S) | Довжина рядка |
| S.find(str, [start], [end]) | Пошук підрядки у рядку. Повертає номер першого входження або -1 |
| S.rfind(str, [start], [end]) | Пошук підрядки у рядку. Повертає номер останнього входження або -1 |
| S.index(str, [start], [end]) | Пошук підрядки у рядку. Повертає номер першого входження або викликає ValueError |
| S.rindex(str, [start], [end]) | Пошук підрядки у рядку.Повертає номер останнього входження або викликає ValueError |
| S.replace(шаблон, заміна) | Заміна шаблону |
| S.split(Символ) | Розбиття рядка по роздільнику |
| S.isdigit() | Чи складається рядок із цифр |
| S.isalpha() | Чи складається рядок з літер |
| S.isalnum() | Чи складається рядок із цифр або букв |
| S.islower() | Чи складається рядок із символів у нижньому регістрі |
| S.isupper() | Чи складається рядок із символів у верхньому регістрі |
| S.isspace() | Чи складається рядок з символів, що не відображаються (пробіл, символ перекладу сторінки ('\f'), "новий рядок" ('\n'), "переклад каретки" ('\r'), "горизонтальна табуляція" ('\t' ) та "вертикальна табуляція" ('\v')) |
| S.istitle() | Чи починаються слова в рядку з великої літери |
| S.upper() | Перетворення рядка до верхнього регістру |
| S.lower() | Перетворення рядка до нижнього регістру |
| S.startswith(str) | Чи починається рядок S із шаблону str |
| S.endswith(str) | Чи закінчується рядок S шаблоном str |
| S.join(список) | Складання рядка зі списку з роздільником S |
| ord(Символ) | Символ для його коду ASCII |
| chr(число) | Код ASCII до символу |
| S.capitalize() | Перекладає перший символ рядка у верхній регістр, а решта у нижній |
| S.center(width, [fill]) | Повертає відцентрований рядок, по краях якого стоїть символ fill (пробіл за замовчуванням) |
| S.count(str, [start], [end]) | Повертає кількість неперетинних входжень підрядки в діапазоні [початок, кінець] (0 і довжина рядка за замовчуванням) |
| S.expandtabs([tabsize]) | Повертає копію рядка, де всі символи табуляції замінюються одним або декількома пробілами, залежно від поточного стовпця. Якщо TabSize не вказано, розмір табуляції належить 8 пробілам |
| S.lstrip([chars]) | Видалення символів пробілів на початку рядка |
| S.rstrip([chars]) | Видалення символів пробілу в кінці рядка |
| S.strip([chars]) | Видалення символів пробілів на початку і в кінці рядка |
| S.partition(шаблон) | Повертає кортеж, що містить частину перед першим шаблоном, сам шаблон і частину після шаблону.Якщо шаблон не знайдено, повертається кортеж, що містить самий рядок, а потім два порожні рядки |
| S.rpartition(Sep) | Повертає кортеж, що містить частину перед останнім шаблоном, сам шаблон і частину після шаблону. Якщо шаблон не знайдено, повертається кортеж, що містить два порожні рядки, а потім самий рядок |
| S.swapcase() | Перекладає символи нижнього регістру до верхнього, а верхнього – до нижнього |
| S.title() | Першу літеру кожного слова переводить у верхній регістр, а решта в нижній |
| S.zfill(width) | Робить довжину рядка не меншого width, за необхідності заповнюючи перші символи нулями |
| S.ljust(width, fillchar=" ") | Робить довжину рядка не меншого width, за необхідності заповнюючи останні символи символом fillchar |
| S.rjust(width, fillchar=" ") | Робить довжину рядка не меншого width, за необхідності заповнюючи перші символи символом fillchar |
| S.format(*args, **kwargs) | Форматування рядка |
Коментарі
Вітаю
Дівчата Хтось із вас мріє отримувати Великий дохід від 200000Р
Отримайте чимало можливостей, з'явиться можливість купити машину Якщо виникли питання, пишіть нам https://lavanagency.ru/ – високооплачувана робота Модельне Ескорт Агентство «Lavana»
Привіт
Жінки Хтось хоче отримати стабільний дохід від 150000Р
Отримайте багато зв'язків, з'явиться можливість придбати машину Якщо виникли питання, пишіть нам https://lavanagency.ru/ – робота з проживанням для дівчат Модельне Ескорт Агентство «Lavana»
Вітаю
Дівчата Хто не прагнути отримувати Великий дохід від 225000Р
Отримайте багато досвіду, з'явиться можливість купити машину. Якщо виникли питання, пишіть нам https://lavanagency.ru/ – робота в спб зі щоденними виплатами Модельне Ескорт Агентство «Lavana»
Привіт
Жінки Хто не прагнути отримувати Високий дохід від 200000Р
Відкриється багато можливостей, з'явиться можливість придбати будинок Якщо виникли питання, пишіть нам https://lavanagency.ru/ – високооплачувана робота в Спб
Додати коментар Скасувати відповідь
ЄДІ на соточку для чайників
Перепрошую, що так довго пропадав. Пітошка повернувся, та ще й із групою у вконтакті, підписуйтесь. Крім цього, на пишотці відкриється нова рубрика, в якій будуть чіткі пояснення всіх завдань ЄДІ та ОДЕ з інформатики, уважно прочитавши які, я впевнений, ви покращите свої бали на іспиті 🙂
Функція capitalize() повертає копію рядка з першим символом у верхньому регістрі, а інші символи у нижньому регістрі.
приклад.
# Функція str.capitalize() # До уваги приймаються лише літери s1 = 'abcdef ghi' s2 = str.capitalize(s1) # s2 = 'Abcdef ghi' s1 = 't' s2 = str.capitalize(s1) # s2 = 'T' s1 = '234' s2 = str.capitalize(s1) # s2 = '234' s1 = 'ABCDEF GHI' s2 = str.capitalize(s1) # s2 = 'Abcdef ghi' # Облік кирилиці s1 = 'байт!' s2 = str.capitalize(s1) # s2 = 'xx1xe0xe9xf2!'
2. Функція str.casefold(). Повернути згорнуту копію рядка
Функція str.casefold() повертає згорнуту копію рядка. Поняття «згорнута копія» рядка означає, що у такій копії видалено всі відмінності регістру символів у рядку.
Особливість згорнутої копії рядка полягає в тому, що функція lower() не може бути застосована до деяких символів, а функція casefold() може. Прикладом такого символу є німецький символ ß, який у функції casefold() замінюється на символи ss на відміну функції lower() .
Функція введена в Python з версії 3.3.
приклад.
# Функція casefold() - повертає згорнуту копію рядка # Використання з рядками, що містять символи верхнього та нижнього регістрів s1 = 'Abcdef Ghi' s2 = str.casefold(s1) # s2 = 'abcdef ghi' s3 = s1.casefold() # s3 = 'abcdef ghi' # Використання з рядками, що містять символи верхнього регістру s4 = 'ABCDEF SS' s5 = s4.casefold() # s5 = 'abcdef ss'
3.Функція str.lower(). Перетворення регістру символів
Функція str.lower() перетворює символи на нижній регістр.
приклад.
# Функція str.lower() s1 = 'ABCD' s2 = s1.lower() # s2 = 'abcd' s2 = 'Hello World!'.lower() # s2 = 'hello world!'
4. Функція str.swapcase(). Повернути копію рядка з перетворенням малих символів на великі і навпаки
Функція str.swapcase() повертає копію рядка з великими літерами, перетвореними на малі і, навпаки, малими перетвореними на великі. Загальна форма виклику функції:
- s1 – вихідний рядок, який потрібно перетворити;
- s2 – результуючий рядок в якому всі великі символи перетворені на малі, а всі малі перетворені на великі.
Для цієї функції не можна стверджувати, що нижченаведене вираз
s.swapcase().swapcase() == s
завжди буде виконуватися.
приклад.
# Функція str.swapcase() s1 = 'Abcd' s2 = s1.swapcase() # s2 = 'aBCD' s1 = 'a+5+BC+D' s2 = str.swapcase(s1) # s2 = 'A+5+bc+d' s2 = 'hELLO WORLD'.swapcase() # s2 = 'Hello world' # Для кирилиці s1 = 'ВЕБ-САЙТ' s2 = s1.swapcase() # s2 = 'Веб-сайт'
5. Функція str.title(). Повернути рядок із великими літерами в словах
Функція str.title() повертає рядок, де всі слова починаються з великої літери. Інші символи у цих словах є малі. Загальна форма використання функції така:
- s1 – вихідний рядок;
- s2 – результуючий рядок, у якому реалізується коригування символів, які є початками слів.
Функція має одну особливість. Символ '\' апострофа утворює межу слова. У деяких випадках це небажано. Щоб уникнути цього недоліку, потрібно використовувати регулярні вирази.
приклад.
# Функція str.title s1 = 'hello world!' # s2 = 'Hello World!' s2 = s1.title() s1 = 'HELLO WORLD!' s2 = str.title(s1) # s2 = 'Hello World!' # Окремий випадок із символом апострофа '\'' s1 = "I'm happy!" s2 = s1.swapcase() # s2 = 'i'M HAPPY!'
6. Функція str.upper(). Конвертувати символи рядка у верхній регістр
Функція str.upper() дозволяє отримати копію рядка, в якому всі символи знаходяться у верхньому регістрі. Згідно з документацією Python, загальна форма функції наступна:
- s1 – вихідний рядок;
- s2 – результуючий рядок-копія, де символи нижнього регістру рядка s1 замінені на символи верхнього регістру.
Конвертування символів здійснюється лише для символів, які мають верхній регістр. Це символи, які включені до наступних категорій:
- "Lu" – Letter uppercase;
- "Ll" – Letter lowercase;
- "Lt" – Letter titlecase.
приклад.
# Функція str.upper() s1 = 'abcdef' s2 = s1.upper() # s2 = 'ABCDEF' s1 = '' # порожній рядок s2 = str.upper(s1) # s2 = '' s1 = '5+6=11' s2 = s1.upper() # s2 = '5+6=11' s2 = 'aBc deFg'.upper() # s2 = 'ABC DEFG'
Пов'язані теми
Рядки в Python і методи роботи з рядками – одна з найважливіших тем, а цей тип даних досить часто використовується, і не тільки в Пітоні, а й у програмуванні в цілому.
Що таке рядки у Python
Отже, рядки в Python – це все, що ми беремо в лапки, при чому для Пітона абсолютно не різниці які це лапки, подвійні "", або одинарні "".
Рядки – це об'єкти, що ітеруються, а також це незмінна послідовність символів, тобто рядок (str) є незмінним (immutable) типом даних.
Рядковий літерал – Це деяка послідовність символів, укладена в одинарні або подвійні лапки.
myStr1="hello" myStr2='hello'
Усі пробіли та знаки табуляції зберігатимуться у рядку так, як є.
myStr3="What's your name?"
Також можна вказувати «багаторядкові» рядкові літерали, використовуючи потрійні лапки («»» або ‘ ‘ ). У межах потрійних лапок можна використовувати подвійні або потрійні лапки.
Наприклад:
myStr4='''This is a multi-line string (text). Це перша лінія тексту. Цей пункт є другою частиною тексту.This is the third line of text with 'quotes' '''
Конкатенація (об'єднання) рядків
Якщо необхідно об'єднати два (або більше) рядків в один (новий, тому що пам'ятаємо, що рядки незмінні), це можна виконати за допомогою символу «+», розташованого між об'єктами рядків.
str1 = "Hello," str2 = "Admin" print(str1 + str2) str3 = str1 + str2 print(str3)
Дублювання рядка
Якщо нам необхідно повторити рядок задане число разів (продублювати його), то для цього скористаємося символом «*» (оператор множення), в якості одного операнда вказавши рядок, а другий — кількість повторень. Як і у разі конкатенації рядків, результат – це новий об'єкт.
myStr="Hello" print(myStr*5) # HelloHelloHelloHelloHello myBigStr=myStr*5 print(myBigStr) # HelloHelloHelloHelloHello
Визначення довжини рядка
Для того, щоб визначити яку довжину рядок, або скільки в ній символів необхідно використовувати стандаотну функцію len() і її аргументом буде саме той рядок, довжину якого ви хочете дізнатися:
myStr="Hello" print(len(myStr)) # 5
Індексація рядків у Python
Для роботи з рядками в Python передбачено велику кількість вбудованих функцій і методів рядків і перед тим, як переходити до вивчення цих різноманітних методів, необхідно розглянути особливості роботи з рядками, а саме індексацію рядків.
Оскільки рядок є впорядкованим набором символів (є послідовністю), то кожен елемент рядка (символ рядка) має свій унікальний індекс (порядковий номер). Нумерація індексів починається із нуля. Індекс другого елемента рядка – 1 і так далі. Індекс останнього символу визначається як довжина рядка мінус один. Розподіл індексів елементів рядка "foobar" відбувається так:
Для доступу до окремих символів рядка потрібно вказати ім'я рядка, за яким слідує індекс потрібного символу в квадратних дужках [].
myStr="foobar" print(myStr[0]) #'f' print(myStr[1]) #'o' print(len(myStr)-1) #'r'
Рядки у Python також мають негативну індексацію, Можна легко повторити, що відлік іде від кінця рядка, тобто. останній елемент має індекс, що дорівнює -1, передостанній – індекс, рівний -2 і т.д.
myStr="foobar" print(myStr[-1]) #r print(myStr[-2]) #a
Рядки в Python та методи роботи з ними
Усі методи рядків і лише, а й у цілому всі методи, викликаються через точку, тобто. спочатку прописуємо об'єкт, або ім'я змінної, потім ставимо крапку та ім'я методу:
my_list.count(n) my_string.title()
Методи зміни регістру рядка
Метод capitalize() переводить перший символ рядка у верхній регістр, решта – у нижній, повертає – перетворену копію оригінального рядка (при цьому оригінальний рядок в результаті роботи методу не зміниться);
myStr="python був створений в останній 1980's by Guido van Rossum." print(myStr.capitalize()) # Python був створений в останній рік 1980 by guido van rossum.
Метод lower() переводить усі буквені символи оригінального рядка в нижній регістр, результат, що повертається — перетворена копія рядка;
myStr="python був створений в останній 1980's by Guido van Rossum." print(myStr.lower()) #python був створений в останній рік 1980 by guido van rossum.
Метод upper() перетворює всі літерні символи рядка у верхній регістр, результат, що повертається — перетворена копія рядка.
myStr="python був створений в останній 1980's by Guido van Rossum." print(myStr.upper()) #PYTHON WAS CREATED IN THE LATE 1980'S BY GUIDO VAN ROSSUM.
Метод title() перетворює перші літери кожного слова у рядку у верхній регістр (а решта літер слів переводить у нижній регістр), повертається результат — перетворена копія рядка.
myStr="python був створений в останній 1980's by Guido van Rossum." print(myStr.title()) #Python Was Created In The Lat 1980 By Guido Van Rossum.
Метод swapcase() перетворює буквені символи рядка, змінюючи їх регістр на протилежний результат, що повертається – перетворена копія рядка;
myStr="python був створений в останній 1980's by Guido van Rossum." print(myStr.swapcase()) #PYTHON WAS CREATED IN THE LATE 1980'S BY gUIDO VAN rOSSUM.
Методи пошуку підрядки у рядку
Ці методи надають різні способи пошуку в цільовому рядку зазначеного підрядка (фрагменту). Кожен метод у цій групі, крім обов'язкового аргументу підрядка (фрагмента оригінального рядка, який шукається) включає два необов'язкові аргументи (startIndex і endIndex) для вказівки діапазону пошуку.
При використанні цих параметрів пошук проходить не у всьому рядку, а в її частині, починаючи з індексу startIndex до індексу endIndex-1 включно. Якщо аргумент startIndex вказано, а endIndex — ні, то пошук у рядку відбувається від індексу startIndex до кінця рядка.
Метод count(elemen, startIndex, endIndex) – Визначає кількість входження фрагмента elemen у рядок (або в його частину, якщо задати діапазон пошуку з індексу startIndex за індекс endIndex;
myStr = "Python був створений в останній 1980's by Guido van Rossum. Python-cool!" print(myStr.count('P')) # 2 рази зустрічається буква "P" print(myStr.count('Python')) # 2 рази зустрічається слово Python print(myStr.count('Python',20,65) ) # 1 раз зустрічається слово Python між індексами 20 та 65Метод find(element, startIndex, endIndex) – використовується для пошуку в рядку потрібного фрагмента element, що повертається результат – індекс початку першого входження фрагмента element у рядок або -1 у разі, якщо фрагмент element відсутній у цьому рядку. Також можна обмежити діапазон пошуку за допомогою параметрів startIndex і endIndex.
myStr="Python був створений в останній 1980's by Guido van Rossum. Python-cool!" print(myStr.find('a')) # 8 - перший раз буква зустрічається під індексом 8 print(myStr.find('a',2,5)) # -1 - буква "a" не зустрічається в діапазоні індексів від 2 до 5Метод rfind (element, startIndex, endIndex) — абсолютно одиничний методом find(), з єдиною різницею: виконується перебір рядка з кінця, а чи не з початку.
myStr="Python був створений в останній 1980's by Guido van Rossum. Python-cool!" print(myStr.rfind('a')) #48 - при переборі рядка праворуч наліво, буква "a" вперше зустрічається під індексом 48 print(myStr.rfind('R',50,55)) #51 "R" - зустрічається в діапазоні індексів 50-55 print(myStr.rfind('R',0,10)) #-1 "R" - не зустрічається в діапазоні індексів 0-10Метод index(pattern, startIndex, endIndex) – Робота методу аналогічна методу.find(), відмінність – у виклику виключення ValueError у разі, коли фрагмент patternне знайдено.
myStr="Python був створений в останній 1980's by Guido van Rossum. Python-cool!" print(myStr.index('a')) #8 індекс першої літери "a" print(myStr.index('a',2,5)) #ValueError - не знайденоМетод rindex(pattern, startIndex, endIndex) робота методу аналогічна методу .rfind(), відмінність – у виклику виключення ValueError у випадку, коли фрагмент pattern не знайдено.
print(myStr.rfind('a')) #48 print(myStr.rfind('a',2,20)) #14 print(myStr.rindex('a')) #48 print(myStr.rindex(') a',2,6)) #ValueError - підрядок не знайденоМетоди перевірки початку (закінчення) рядків
Методи цієї групи повертають True у випадку, коли оригінальний рядок задовольняє умову, False – інакше. Для обмеження діапазону перевірки можна використовувати параметри startIndex і endIndex.
Метод startwith(pattern, startIndex, endIndex) — визначає, чи починається рядок із зазначеного фрагмента pattern
myStr="Python був створений в останній 1980's by Guido van Rossum. Python-cool!" print(myStr.startswith('P')) #True print(myStr.startswith('p')) #False print(myStr.startswith('w',7)) #TrueМетод endswith(pattern, startIndex, endIndex) — визначає, чи рядок закінчується вказаним фрагментом pattern.
myStr="Python був створений в останній 1980's by Guido van Rossum. Python-cool!" print(myStr.endswith('!')) #True print(myStr.endswith('n',2,6)) #TrueМетоди перевірки рядків — рядки в Python та методи роботи
Рядки в Python і методи роботи з ними досить специфічні, але водночас дозволяють вирішувати багато завдань. Наступні методи повертають значення True – якщо рядок містить потрібні символи, False – інакше)
Метод isalnum() — перевіряє, чи рядок складається лише з буквених та цифрових символів.
myStr="Python2021" print(myStr.isalnum()) #True
Метод isalpha() — перевіряє, чи рядок складається лише з літерних символів.
myStr="Python2021" print(myStr.isalpha()) #False myStr="Python" print(myStr.isalpha()) #True
Метод isdigit() — перевіряє, чи рядок складається лише з цифрових символів (використовується для перевірки, чи є рядок числом).
myStr="2021Y" print(myStr.isdigit()) #False
Метод islower() — перевіряє, чи всі буквені символи рядка у нижньому регістрі (символи рядка , які є буквою алфавіту — ігноруються даної перевіркою).
myStr1="it був створений в останній 1980" print(myStr1.islower()) #True
Метод isspace() – Перевіряє, що до складу рядка входять тільки пробілові символи, до яких відносяться символи пропуску ' ', табуляції '\t' і переходу на новий рядок '\n'.
myStr2=" \t \n \t\t" print(myStr2.isspace()) #True
Метод istitle() — перевіряє, чи кожне слово рядка починається з символу у верхньому регістрі.
myName= "Guido van Rossum" print(myName.istitle()) #False myName= "Guido van Rossum" print(myName.istitle()) #True
Метод isupper() — визначає, чи всі буквені символи рядка у верхньому регістрі.
myName2= "GUIDO VAN ROSSUM" print(myName2.isupper()) #True
Метод islower() – Визначає, чи всі буквені символи рядка в нижньому регістрі.
myName2= "guido van rossum" print(myName2.isupper()) #True
- Дізналися, що таке рядки в Python;
- Розглянули, як індексуються рядки в Python;
- Розібрали що таке рядки у Python та методи роботи з ними.
На цьому тема рядка в Python і методи роботи з ними не зовсім закінчується, варто звернути особливу увагу на форматування рядків у Python 3, а детальніше про роботу з рядками ви можете ознайомитись в офіційній документації.