Операції та застосування Python, 2 частина
Текст (продовження)
Створена для зручності і простоти, мова Python має декілька інструментів для форматування рядків. Перший з них це оператор %
, який форматує рядок у стилі C. У самому рядку вказується перелік заповнювачів (placeholders), кожен з яких є знаком відсотка та символом або послідовністю символів, що визначає тип та параметри значення, на яке буде замінений заповнювач. Після оператора %
вказується значення (якщо одне) або кортеж значень, які будуть вставлені у рядок.
Заповнювачі можуть бути досить складними, тому розберемо основу на прикладі вище. %d
— означає, що тут має бути ціле число; %s
tring вказує на рядок (або символ). Найскладнішим тут є %.2f
. f
означає float, тобто дійсне число. .2
показує мові, що число необхідно вказати з двома знаками після крапки (коми).
Загальний формат заповнювачів такий: %[<опції>][<довжина>][.<точність>]<тип>
. Особливий випадок: %%
щоб вказати просто знак відсотка і не форматувати його.
Тип може бути таким:
- d або i — ціле число; x — ціле шістнадцяткове число; o — вісімкове число
- f або F — дійсне число
- e або E — число в експоненційному записі
- g або G — автоматично обрати або f, або e, що коротше
- c — символ
- s — рядок
- r — рядок у лапках
Довжина вказує мінімальну кількість символів, виділених на заповнювач. Якщо значення займає менше місця для запису, перед ним будуть пропуски. Точність використовується для дійсних чисел для вказування знаків після коми (тобто крапки, як це у програмуванні). Особливим випадком є можливість вказування змінної довжини знаком *
у заповнювачі, тоді вона надається як перший аргумент:
"%*s" % (10, "рядок") # " рядок"
Опції можуть бути такими:
#
— показувати основу або точку для чисел; наприклад,"%#x" % 16
→ “0x10”, а"%x" % 16
→ “10”0
— використовувати нулі замість пропусків якщо довжина значення менше мінімальної; корисно для чисел-
— вирівнювати ліворуч якщо довжина менше мінімальної, адже за замовчуванням праворуч+
— показувати знак навіть для додатніх чисел- ` ` — просто виділяє 1 місце для знака, але не показує плюс
Існує й альтернативний спосіб форматування рядків за допомогою метода format()
. Вказувати тип та всі ці опції не потрібно: замість заповнювачів просто {}
або {n}
, де n — порядковий номер значення, що треба підставити. У аргументи метода надають значення. Також можна давати назви аргументам.
'Я {}, а ти {}?'.format('студент', 'учень') # "Я студент, а ти учень?"
"{2} {1} {0}.".format("інструкцію", "прочитайте", "Уважно") # "Уважно прочитайте інструкцію."
"{a} {b} {c}.".format(c = "інструкцію", b = "прочитайте", a = "Уважно") # Те ж.
І найпростіший, але найменш потужний спосіб форматування це вставляння літери f
перед літералом рядка, а у фігурних дужках прописувати вираз, найчастіше назву змінної.
a = 5
b = 10
print( f"Відповідь: {(7 + a) / b}" )
Це багато інформації про рядки за один раз, однак залишилось лише надати невеликий перелік основних методів-операцій з рядками.
capitalize()
— зробити першу літеру великоюcenter(n)
,ljust(n)
,rjust(n)
— зробити рядок по центру, якщо n — довжина у символах; вирівняти ліворуч; праворуч;"test".center(10)
→ “ test “find(<значення>)
,index(<значення>)
— знайти позицію підрядка у рядку, повертає -1 якщо не знайдено; кидає помилку, якщо не знайденоisalnum()
,isalpha()
,isnumeric()
— чи є рядок цифро-літерним; лише з літер; числомjoin(<контейнер>)
— рядок є символом або послідовністю символів, якими слід з’єднати всі елементи контейнера; детальніше пізнішеsplit([роздільник])
,splitlines()
— розділити рядок на список пробілами або вказаним роздільником; розділити за новими рядками"hello world".split()
→ [“hello”, “world”]lower()
,upper()
— зробити всі літери маленькими; великимиreplace(<з>, <на>)
— замінити щось на щось інше у рядку, будуть замінені всі копії підрядкаstrip()
— “обрубати” зайві пропуски на початку і в кінці рядка
Звертаю вашу увагу, що всі ці методи повертають новий оброблений рядок, а оригінальний рядок залишається не зміненим. Таким чином, щоб змінити оригінальний рядок x
, необхідно робити так: x = x.strip()
is, type()
Окремим можна виділити оператор тотожності is
та його заперечний відповідник is not
. Як зазначалося раніше, при створенні кількох назв однієї змінної (a = b = 2
) об’єкт у пам’яті створюється лише один, а назви просто є посиланнями на нього. Цей оператор дозволяє перевірити, чи вказують змінні на той самий об’єкт: a is b # True
.
Вбудована функція type(<об'єкт>)
повертає клас, до якого типу належить вказаний об’єкт: type("test") # str
. У поєднанні з оператором is
таким чином можна перевіряти, чи є об’єкт певного типу: type(2.74) is float # True
.