Built-in methods

Вбудовані методи рядків у python

У посібнику за типами змінних у python ви дізналися, що Python — це об'єктно-орієнтована мова. Кожен елемент даних у програмі python є об'єктом.

Ви також знайомі з функціями: самостійними блоками коду, які можна викликати для виконання певних завдань.

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

Синтаксис для виклику методу об'єкта виглядає так:

obj.foo(<args>)

Цей код викликає метод .foo()об'єкта obj. - аргументи, що передаються методом (якщо є).

Ви дізнаєтеся набагато більше про визначення та виклик методів пізніше у статтях про об'єктно-орієнтоване програмування. Зараз мета засвоїти вбудовані методи, що часто використовуються, які є в python для роботи з рядками.

У наведених методах аргументи, зазначені у квадратних дужках ( []), є необов'язковими.

Зміна регістру рядка

Методи цієї групи виконують перетворення регістру рядка.

string.capitalize()наводить першу літеру у верхній регістр, інші у нижній.

s.capitalize()повертає копію sз першим символом, перетвореним на верхній регістр, та іншими символами, перетвореними на нижній регістр:

>>> s = 'everyTHing yoU Can IMaGine is rEAl'
>>> s.capitalize()
'Everything you can imagine is real'

Не алфавітні символи не змінюються:

string.lower()перетворює всі буквені символи на малі.

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

string.swapcase()змінює регістр буквених символів на протилежний.

s.swapcase()повертає копію sз великими літерними символами, перетвореними на малі і навпаки:

string.title()перетворює перші літери всіх слів у великі

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

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

string.upper()перетворює всі буквені символи на великі.

s.upper()повертає копію sз усіма літерними символами у верхньому регістрі:

Знайти та замінити підрядок у рядку

Ці методи надають різні способи пошуку в цільовому рядку зазначеного підрядка.

Кожен метод у цій групі підтримує необов'язкові аргументи та аргументи. Вони визначають діапазон пошуку: дія методу обмежена частиною цільового рядка, що починається в позиції символу і триває аж до позиції символу , але не включаючи його. Якщо зазначено, а ні, метод застосовується до частини рядка від кінця.

string.count([, [, ]])підраховує кількість входжень підрядка у рядок.

s.count()повертає кількість точних входжень підрядки в s:

Кількість входження зміниться, якщо вказати і :

string.endswith([, [, ]])визначає, чи закінчується рядок заданим підрядком.

s.endswith()повертає, Trueякщо sзакінчується зазначеним і Falseякщо ні:

Порівняння обмежено підрядком, між і якщо вони вказані:

string.find([, [, ]])шукає в рядку заданий підрядок.

s.find()повертає перший індекс у sякий відповідає початку рядка :

Цей метод повертає, -1якщо зазначений підрядок не знайдено:

Пошук у рядку обмежується підрядком між і , якщо вони вказані:

string.index([, [, ]])шукає в рядку заданий підрядок.

Цей метод ідентичний .find(), крім те що він викликає виняток ValueError, а то й знайдено:

string.rfind([, [, ]])шукає в рядку заданий підрядок, починаючи з кінця.

s.rfind()повертає індекс останнього входження підрядка до s, який відповідає початку :

Як і в .find(), якщо підрядок не знайдено, повертається -1:

Пошук у рядку обмежується підрядком між і , якщо вони вказані:

string.rindex([, [, ]])шукає в рядку заданий підрядок, починаючи з кінця.

Цей метод ідентичний .rfind(), крім те що він викликає виняток ValueError, а то й знайдено:

string.startswith([, [, ]])визначає, чи починається рядок із заданого підрядка.

s.startswith()повертає, Trueякщо sпочинається із зазначеного і Falseякщо ні:

Порівняння обмежено підрядком, між і якщо вони вказані:

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

Методи у цій групі класифікують рядок на основі символів, які він містить.

string.isalnum()визначає, чи складається рядок із літер та цифр.

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

string.isalpha()визначає, чи складається рядок лише з літер.

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

string.isdigit()визначає, чи складається рядок із цифр (перевірка на число).

s.digit()повертає Trueколи рядок sне порожній і всі його символи є цифрами, а якщо Falseні:

string.isidentifier()визначає, чи є допустимим ідентифікатором Python.

s.isidentifier()повертає True, якщо sвалідний ідентифікатор (назва змінної, функції, класу і т.д.) python, а якщо Falseні:

Важливо: .isidentifier() поверне Trueдля рядка, який відповідає зарезервованому ключовому слову python, навіть якщо його не можна використовувати:

Ви можете перевірити, чи рядок є ключовим словом Python, використовуючи функцію iskeyword(), яка знаходиться в модулі keyword. Один із можливих способів зробити це:

Якщо ви дійсно хочете переконатися, що рядок можна використовувати як python ідентифікатор, ви повинні перевірити, що .isidentifier()= Trueі iskeyword()= False.

string.islower()визначає, чи є літерні символи рядка малими.

s.islower()повертає True, якщо рядок sне порожній, і всі літерні символи, що містяться в ньому, малі, а Falseякщо ні. Чи не алфавітні символи ігноруються:

string.isprintable()визначає, чи складається рядок лише з символів, що друкуються.

s.isprintable()повертає, Trueякщо рядок sпорожній або всі літерні символи, які він містить, можна вивести на екран. Повертає, Falseякщо sмістить хоч один спеціальний символ. Чи не алфавітні символи ігноруються:

Важливо: Це єдиний .is****()метод, який повертає True, якщо sпорожній рядок. Всі інші повертаються False.

string.isspace()визначає, чи рядок складається лише з пробельних символів.

s.isspace()повертає True, якщо sне порожній рядок, і всі символи є пробельними, а Falseякщо ні.

Найбільш часто зустрічаються пробільні символи - це пробіл ' ', табуляція '\t'і новий рядок '\n':

Тим не менш, є кілька символів ASCII, які вважаються пробілами. І якщо враховувати символи Юнікоду, їх ще більше:

'\f'та '\r'є escape-послідовностями для символів ASCII; '\u2005'це escape-послідовність для Unicode.

string.istitle()визначає, чи починаються слова рядка з великої літери.

s.istitle()повертає Trueколи sне порожній рядок і перший алфавітний символ кожного слова у верхньому регістрі, а решта літерних символів у кожному слові малі. Повертає False, якщо ні:

string.isupper()визначає, чи є буквені символи рядка великими.

s.isupper()повертає True, якщо рядок sне порожня, і всі літерні символи, що містяться в ній, є великими, і в False, якщо ні. Чи не алфавітні символи ігноруються:

Вирівнювання рядків, відступи

Методи цієї групи впливають виведення рядка.

string.center([, ])вирівнює рядок по центру.

s.center()повертає рядок, що складається з sвирівняної по ширині . За замовчуванням відступ складається з пробілу ASCII:

Якщо вказано необов'язковий аргумент , він використовується як символ заповнення:

Якщо sбільше або дорівнює , рядок повертається без змін:

string.expandtabs(tabsize=8)замінює табуляції на прогалини

s.expandtabs()замінює кожен символ табуляції ( '\t') пробілами. За замовчуванням табуляція замінюється на 8 пробілів:

tabsizeнеобов'язковий параметр, що задає кількість прогалин:

string.ljust([, ])вирівнювання лівим краєм рядка в полі.

s.ljust()повертає рядок s, вирівняний по лівому краю в полі завширшки . За замовчуванням відступ складається з пробілу ASCII:

Якщо вказано аргумент , він використовується як символ заповнення:

Якщо sбільше або дорівнює , рядок повертається без змін:

string.lstrip([])обрізає пробільні символи зліва

s.lstrip()повертає копію s, в якій всі пробілові символи з лівого краю видалені:

Необов'язковий аргумент визначає набір символів, які будуть видалені:

string.replace(, [, ])замінює входження підрядки у рядку.

s.replace(, )повертає копію sде всі входження підрядки , замінені на :

Якщо вказано необов'язковий аргумент , виконується кількість замін:

string.rjust([, ])вирівнювання з правого краю рядка в полі.

s.rjust()повертає рядок s, вирівняний праворуч у полі шириною . За замовчуванням відступ складається з пробілу ASCII:

Якщо вказано аргумент , він використовується як символ заповнення:

Якщо sбільше або дорівнює , рядок повертається без змін:

string.rstrip([])обрізає пробільні символи праворуч

s.rstrip()повертає копію sбез пробілів, видалених з правого краю:

Необов'язковий аргумент визначає набір символів, які будуть видалені:

string.strip([])видаляє символи з лівого та правого краю рядка.

s.strip()еквівалентно послідовному виклику s.lstrip()та s.rstrip(). Без аргументу метод видаляє прогалини на початку та наприкінці:

Як .lstrip()і .rstrip(), необов'язковий аргумент визначає набір символів, які будуть видалені:

Важливо: Коли значення методу, що повертається, є іншим рядком, як це часто буває, методи можна викликати послідовно:

string.zfill()доповнює рядок нулями зліва.

s.zfill()повертає копію sдоповнену '0'ліворуч для досягнення довжини рядка вказаної в :

Якщо sмістить знак перед цифрами, він залишається зліва рядка:

Якщо sбільше або дорівнює , рядок повертається без змін:

.zfill()найбільш корисний для рядкових уявлень чисел, але python із задоволенням заповнить рядок нулями, навіть якщо в ньому немає чисел:

Методи перетворення рядка до списку

Методи у цій групі перетворюють рядок на інший тип даних і навпаки. Ці методи повертають або приймають об'єкти, що ітеруються, — термін Python для послідовного набору об'єктів.

Багато з цих методів повертають або список, або кортеж. Це два схожі типи даних, які є прототипами прикладів ітерацій у python. Список укладений у квадратні дужки ( []), а кортеж укладено у прості ( ()).

Тепер погляньмо на останню групу рядкових методів.

string.join()поєднує список у рядок.

s.join()повертає рядок, який є результатом конкатенації об'єкта з роздільником s.

Зверніть увагу, що .join()викликається рядок-розділювач s. має бути послідовністю рядкових об'єктів.

Приклади коду допоможуть уникнути. У першому прикладі роздільником sє ​​рядок ', ', а список рядків:

В результаті виходить один рядок, що складається зі списку об'єктів, розділених комами.

У наступному прикладі вказується як одне рядкове значення. Коли рядкове значення використовується як ітерований, воно інтерпретується як список окремих символів рядка:

Таким чином, результатом ':'.join('corge')є рядок, що складається з кожного символу 'corge', розділеного символом ':'.

Цей приклад завершується з помилкою TypeError, тому що один з об'єктів не є рядком:

Це можна виправити так:

Як ви скоро побачите, багато об'єктів в Python можна ітерувати, і .join()особливо корисний для створення рядків.

string.partition()ділить рядок на основі роздільника.

s.partition()відокремлює від sпідрядок довжиною від початку до першого входження . Значення, що повертається, являє собою кортеж з трьох частин:

  • Частина sдо

  • Розділювач

  • Частина sпісля

Ось пара прикладів .partition()у роботі:

Якщо не знайдено в s, повертається кортеж містить sдва порожні рядки:

s.rpartition()ділить рядок на основі роздільника, починаючи з кінця.

s.rpartition()працює як , за винятком того, що ділиться при останньому входженні замість першого:s.partition()s

string.rsplit(sep=None, maxsplit=-1)ділить рядок на список із підрядків.

Без аргументів s.rsplit()ділить sна підрядки, розділені будь-якою послідовністю прогалин, і повертає список:

Якщо зазначено, він використовується як роздільник:

Якщо = None, рядок розділяється пробілами, якби не було вказано взагалі.

Коли явно вказано як роздільник s, послідовні повтори роздільника будуть повернуті як порожні рядки:

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

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

Стандартне значення для — -1. Це означає, що всі можливі поділи мають бути виконані:

string.split(sep=None, maxsplit=-1)ділить рядок на список із підрядків.

s.split()веде себе як s.rsplit(), за винятком того, що при вказівці , розподіл починається з лівого краю s:

Якщо не вказано, між .rsplit()і .split()в python різниці немає.

string.splitlines([])ділить текст на список рядків.

s.splitlines()ділить sна рядки та повертає їх у списку. Будь-який із наступних символів або послідовностей символів вважається межею рядка:

Розділювач

Значення

Новий рядок

Повернення каретки

\r

Повернення каретки + переклад рядка

\v або \x0b

Таблиці рядків

\f або \x0c

Подання форми

\x1c

Розділювач файлів

\x1d

Розділювач груп

\x1e

Розділювач записів

85

Наступний рядок

&2028

Новий рядок (Unicode)

&2029

Новий абзац (Unicode)

Ось приклад використання декількох різних роздільників рядків:

Якщо у рядку присутні послідовні символи межі рядка, вони з'являться у списку результатів як порожні рядки:

Якщо необов'язковий аргумент вказано і його булеве значення True, то символи межі рядків зберігаються у списку підрядків:

Last updated