Ілюстрація з відео для пояснення потреби в наслідуванні:
#Навіщо нам наслідування?
class Person:
def __init__(self, name, surname):
self.name = name
self.surname = surname
class Student:
def __init__(self, name, surname):
self.name = name
self.surname = surname
person1 = Person("John", "Smith")
student1 = Student("Jenny", "Jackson")
print(person1.name, person1.surname)
print(student1.name,student1.surname)
Наслідування в Python — це один з основних принципів об’єктно-орієнтованого програмування, який дозволяє створювати нові класи на основі вже існуючих. Це дозволяє повторно використовувати код, спрощує його підтримку та забезпечує більш організовану структуру. Клас, який наслідується, називається “батьківським” (або “базовим”), а новий клас, що його наслідує, — “дочірнім”. Приклад з відео:
#Inheritance (наслідування) #дозволяє нам визначити клас,
#який успадковує всі методи
#та властивості з іншого класу.
#Батьківський клас — це клас, який успадковується,
#також називається базовим класом.
#Дочірній клас - це клас, який успадковує інший клас,
#також називається похідним класом.
class Person:
def __init__(self, name, surname):
self.name = name
self.surname = surname
class Student(Person):
pass
person1 = Person("John", "Smith")
student1 = Student("Jenny", "Jackson")
print(person1.name, person1.surname)
print(student1.name,student1.surname)
Функціяsuper()
В Python є функція super(), яка дозволяє дочірньому класу наслідувати властивості від батьківського. Приклад з відео:
#Python також має функцію super(),
#яка змусить дочірній клас успадкувати
#всі методи та властивості від
#свого батьківського класу.
class Person:
def __init__(self, name, surname):
self.name = name
self.surname = surname
class Student(Person):
def __init__(self, name, surname, averageMark):
super().__init__(name, surname)
self.averageMark = averageMark
person1 = Person("John", "Smith")
student1 = Student("Jenny", "Jackson", 3.5)
print(person1.name, person1.surname)
print(student1.name,student1.surname, student1.averageMark)
Множинне наслідування
Множинне наслідування в Python — це можливість створення дочірнього класу, який наслідує від кількох батьківських класів одночасно. Це дозволяє об’єднувати властивості та методи декількох класів, що може бути корисним у складних системах, де потрібно інтегрувати функціональність з різних джерел. Приклад з відео:
#Python підтримує множинне наслідування
class PythonDeveloper:
def projectPython(self):
print("Python coding in process.")
class JavaDeveloper:
def projectJava(self):
print("Java coding in process.")
class PythonJavaDeveloper(PythonDeveloper, JavaDeveloper):
pass
developer1 = PythonJavaDeveloper()
developer1.projectPython()
developer1.projectJava()
Функція isinstance()
Функція isinstance() в Python використовується для перевірки, чи є об’єкт певного типу або чи належить він до певного класу (або підкласу). Вона повертає True, якщо об’єкт є екземпляром вказаного класу або його підкласу, і False в іншому випадку. Приклад з відео:
#Функція isinstance допомагає
#перевірити тип об'єкта
class PythonDeveloper:
def projectPython(self):
print("Python coding in process.")
class JavaDeveloper:
def projectJava(self):
print("Java coding in process.")
developer1 = JavaDeveloper()
if isinstance(developer1,PythonDeveloper):
print("This is PythonDeveloper object.")
elif isinstance(developer1, JavaDeveloper):
print("This is JavaDeveloper object.")
else:
print("Unknown object type.")
В цьому відео поговоримо про наслідування (важлива концепція ООП).
Атрибути класів за помовчанням доступні або публічні (public), що надає можливість їх змінювати. Приклад з відео:
#Атрибути класу доступні за замовчуванням,
#що означає, що ви можете їх змінити.
class Person:
def __init__(self, name, surname, age):
self.name = name
self.surname = surname
self.age = age
def displayFunc(self):
print(f"Name: {self.name} Surname:{self.surname} Age:{self.age}")
person1 = Person("John", "Smith", 35)
person1.displayFunc()
person1.age = -200
person1.surname = "InvalidSurname"
person1.name = "InvalidName"
person1.displayFunc()
print(person1.surname)
Інкапсуляція у Python — це принцип об’єктно-орієнтованого програмування, що полягає в приховуванні даних об’єкта та наданні доступу до них лише через визначені методи. Це дозволяє контролювати, як дані використовуються, забезпечуючи безпеку і запобігаючи випадковим змінам. У Python для цього використовують односторонній доступ до атрибутів, позначаючи їх як приватні, за допомогою одного або двох підкреслень.
Варіанти модифікаторів доступу:
self.name = name – public, доступні звідусіль
self._name = name – protected, доступні в межах класу та підкласів
self.__name = name – private, доступні в межах класу
Для того щоб зробити змінну приватною треба додати два підкреслення на початку назви змінної. Приклад з відео:
#Ми можемо захистити змінні в класі,
#позначивши їх приватними.
#Щоб визначити приватну змінну,
#додайте два підкреслення як префікс
#на початку назви змінної.
#self.__age
class Person:
def __init__(self, name, surname, age):
self.__name = name
self.__surname = surname
self.__age = age
def displayFunc(self):
print(f"Name:{self.__name} Surname:{self.__surname} Age:{self.__age}")
person1 = Person("John", "Smith", 35)
person1.displayFunc()
#print(person1.__age)
#print(person1.__surname)
#print(person1.__name)
Приклад з відео із застосуванням методу displayFunc() для виведення атрибутів об’єкта класу Person і спробою внесення змін у приватні атрибути:
Для внесення змін у приватні атрибути можна використовувати спеціальні методи: setter method (сеттери) – для внесення змін у визначені атрибути класу, getter method (геттери) – для отримання поточних даних з атрибутів класу. Прикладі з відео:
class Person:
def __init__(self, surname, age):
self.__surname = surname
self.__age = age
#setter method
def setAge(self, age):
if 1<age<120:
self.__age=age
else:
print("Invalid age input.")
#getter method
def getAge(self):
return self.__age
person1 = Person("Smith", 35)
print(person1.getAge())
person1.setAge(33)
print(person1.getAge())
person1.setAge(0)
print(person1.getAge())
print(person1.__surname)
Замість методів геттерів та сеттерів можна використовувати так звані властивості геттерів та сеттерів. Особливість синтаксису полягає у використанні символу @ для позначення відповідних властивостей. Приклад з відео:
#Щоб створити властивість геттера,
#використовуйте анотацію @property.
#Щоб створити властивість сеттера,
#використовуйте анотацію @name.setter.
class Person:
def __init__(self, surname, age):
self.__surname = surname
self.__age = age
@property
def age(self):
return self.__age
@age.setter
def age(self, age):
if 1<age<120:
self.__age=age
else:
print("Invalid age input.")
person1 = Person("Smith", 35)
print(person1.age)
person1.age = 33
print(person1.age)
person1.age = 150
print(person1.age)
В цьому відео поговоримо про інкапсуляцію (важлива концепція ООП).
Класи в Python — це шаблони для створення об’єктів, які дозволяють організувати дані і функціональність у програмі. Вони є основою об’єктно-орієнтованого програмування (ООП) і дозволяють створювати об’єкти, які мають власні атрибути (дані) і методи (функції). Приклад з відео:
#Python — це об'єктно-орієнтована
#мова програмування.
#Майже все в Python є об’єктом
#зі своїми властивостями та методами.
#Клас схожий на конструктор об’єктів
#або «схему» для створення об’єктів.
#Щоб створити клас, використовуйте
#ключове слово class
class MyFavouriteNumber:
favouriteNumber = 5
#Now we can use the class named MyFavouriteNumber to create objectsfavNum1 = MyFavouriteNumber()
print(favNum1)
print(type(favNum1))
print(favNum1.favouriteNumber)
Функція __init__()
Функція __init__() в Python — це спеціальний метод, який використовується як конструктор класу. Він викликається автоматично при створенні нового об’єкта цього класу і використовується для ініціалізації атрибутів об’єкта. Приклад з відео:
#Щоб зрозуміти значення класів,
#ми повинні зрозуміти
#вбудовану функцію __init__().
#Усі класи мають функцію під
#назвою __init__(), яка завжди
#виконується, коли клас ініціюється.
#Функція __init__() щоразу
#викликається автоматично
#клас використовується для
#створення нового об'єкта.
class MyFavouriteNumber:
def __init__(self, favouriteNumber):
self.favouriteNumber=favouriteNumber
favNum1 = MyFavouriteNumber(7)
print(favNum1.favouriteNumber)
favNum2 = MyFavouriteNumber(8)
print(favNum2.favouriteNumber)
Функція __str__()
Функція __str__() в Python — це спеціальний метод, який визначає, як об’єкт класу буде представлений у вигляді рядка. Він викликається, коли ви використовуєте функцію print() або функцію str() для об’єкта. Приклад з відео:
#Функція __str__() керує тим,
#що має бути повернуто
#коли об'єкт класу представлено
#у вигляді рядка.
#Якщо функцію __str__() не встановлено,
#повертається рядкове представлення об'єкта
class Person:
def __init__(self, name, surname, age):
self.name = name
self.surname = surname
self.age = age
person1 = Person("John", "Smith", 35)
print(person1)
print(person1.name, person1.surname, person1.age)
person2 = Person("Jenny", "Jackson", 30)
print(person2)
print(person2.name, person2.surname, person2.age)
Приклад рядкового представлення об’єкта за допомогою функції __str__() з відео:
Спрощено методи об’єкта в Python — це функції, які визначені всередині класу і можуть бути викликані на об’єктах цього класу. Вони дозволяють виконувати дії або маніпулювати атрибутами об’єкта. Приклад з відео:
#Об'єкти також можуть містити методи.
#Методи в об'єктах є функціями
#які належать об'єкту.
#Параметр self - це посилання на
#поточний екземпляр класу,
#та використовується для доступу до
#змінних, які належать до класу.
class Person:
def __init__(self, name, surname):
self.name = name
self.surname = surname
def introduceFunc(self):
print("Hello my name is {} {}".format(self.name, self.surname))
person1 = Person("John", "Smith")
person1.introduceFunc()
person2 = Person("Jenny", "Jackson")
person2.introduceFunc()
Параметр self
Параметр self в Python — це посилання на поточний об’єкт класу, з яким працює метод. Він використовується для доступу до атрибутів і методів цього об’єкта. Приклад з відео:
#Параметр self - це посилання на
#поточний екземпляр класу,
#та використовується для доступу до
#змінних, які належать до класу.
#Його не обов'язково називати self,
#ви можете називати його як завгодно,
#але це має бути перший параметр
#будь-якої функції в класі.
class Person:
def __init__(refToCurrentInstance, name, surname):
refToCurrentInstance.name = name
refToCurrentInstance.surname = surname
def introduceFunc(refToCurrentInstance):
print("Hello my name is {} {}".format(refToCurrentInstance.name,
refToCurrentInstance.surname))
person1 = Person("John", "Smith")
person1.introduceFunc()
person2 = Person("Jenny", "Jackson")
person2.introduceFunc()
Внесення змін в об’єкти класу
Змінювати об’єктіи класу можна за допомогою так званого dot syntax (синтаксису крапки). Dot syntax (синтаксис крапки) в Python — це спосіб доступу до атрибутів і методів об’єктів або класів за допомогою крапки. Це дозволяє вам працювати з властивостями та функціями, які належать до конкретного об’єкта або класу. Приклад з відео:
#Ви можете змінювати властивості об’єктів,
#використовуючи крапковий синтаксис для доступу
class Person:
def __init__(self, name, surname, age):
self.name = name
self.surname = surname
self.age = age
def introduceFunc(self):
print("Hello my name is {} {}".format(self.name, self.surname))
print("I'm {} old".format(self.age))
person1 = Person("John", "Smith", 35)
person1.introduceFunc()
person1.name = "James"
person1.age = 33
person1.introduceFunc()
del person1.age
#person1.introduceFunc()
del person1
#print(person1)
В цьому відео поговоримо про: 00:06 Classes 03:43 init() Function 09:39 str() Function 18:30 Object Methods 22:35 self Parameter 27:14 Modify Objects
Python підтримує різноманітні типи файлів. Файли можна розділити на дві великі групи:
Текстові файли – файли, які зберігають інформацію у текстовому форматі, напр. txt, html, csv тощо.
Двійкові файли – зображення, аудіо, відео тощо.
Робота з файлами може відрізнятися в залежності від типу файлу.
Послідовність роботи з файлами:
Використовуйте метод open(), щоб відкрити файл
Використовуйте метод read() для читання файлу або метод write() для запису у файл.
Використовуйте метод close(), щоб закрити файл.
Для початку роботи з файлом скористайтеся методом open(), щоб відкрити його: open(file, mode). Перший параметр – це шлях до файлу. Він може бути абсолютним або відносним.
Приклад абсолютного шляху до файлу – C://directoryname/filename.txtC://directoryname/filename.txt
Відносний шлях до файлу залежить від місця поточного скрипта Python. Приклад відносного шляху: directoryname/filename.txtdirectoryname/filename.txt
Другим аргументом є режим. Є чотири режими:
r (Read/Читання). Відкриває файл для читання. Якщо файл не знайдено, генерується FileNotFoundError.
w (Write/Написати). Відкриває файл для запису в нього. Якщо файл відсутній, він створений. Якщо файл присутній, він створюється знову, а всі дані в ньому стираються.
a(Append/Додати). Відкриває файл для внесення змін без стирання попередніх даних. Якщо файл відсутній, він створюється. Якщо файл присутній, нова інформація додається в кінці файлу.
x (Create/Створити). Створює файл, якщо файл існує, повертає помилку.
Крім того, ви можете вказати, чи потрібно обробляти файл у двійковому чи текстовому режимі:
t – text – значення за замовчуванням. Текстовий режим
b – binary – Двійковий режим (наприклад, зображення)
Функція open() в Python використовується для відкриття файлів. Вона повертає об’єкт файлу, з яким можна працювати. Приклад з відео:
Під час роботи з файлами можуть виникати помилки, для обробки яких можна використовувати блоки try except. Приклад з відео:
#Під час роботи з файлами можливі винятки.
#Ви можете використовувати блоки
#"try...except" для вирішення таких проблем.
try:
file2 = open("file2.txt", "w")
try:
file2.write("Python is a solid choice.")
except Exception as exInner:
print(exInner)
finally:
file2.close()
except Exception as exOuter:
print(exOuter)
Вираз with в Python
Вираз with в Python використовується для управління контекстом, що дозволяє автоматично обробляти ресурси, такі як файли або з’єднання. Він забезпечує безпечне відкриття і закриття ресурсів, навіть якщо виникає помилка.
Основні переваги використання with:
Автоматичне закриття ресурсів: Наприклад, при відкритті файлу, with автоматично закриває його після виходу з блоку, навіть якщо сталася помилка.
Читабельність: Код стає більш зрозумілим і компактним.
Приклад з відео:
#Можна використовувати вираз "with".
#Він закриває файли в будь-якому разі.
# with open(filename, mode) as file_obj:
# commands
#with вираз визначає змінну file_obj для відкритого файлу.
with open("file3.txt", "w") as fileInUse:
fileInUse.write("Python is a solid choice. File3.")
Метод write()
Метод write() в Python використовується для запису певного тексту у файл. Приклад з відео:
#створити новий файл і вписати в нього текст.
with open("file4.txt", "w") as fileInUse:
fileInUse.write("Java is a solid choice. File4")
with open("file4.txt", "w") as fileInUse:
fileInUse.write("Python is a solid choice. File4.")
with open("file4.txt", "a") as fileInUse:
fileInUse.write("\nJava is a solid choice. File4")
with open("file4.txt", "a") as fileInUse:
print("\nC# is a solid choice. File4", file=fileInUse)
Зчитування файлу
Зчитування файлу в Python зазвичай здійснюється за допомогою методу open() у поєднанні з методами для читання вмісту. Основні способи зчитування:
read() – Зчитує весь вміст файлу як один рядок.
readline() – Зчитує один рядок за раз.
readlines() – Зчитує всі рядки та повертає їх у вигляді списку.
Приклад з відео:
#ви можете прочитати текстовий файл за допомогою cycle for
with open("file4.txt", "r") as fileInUse:
for line in fileInUse:
print(line, end="")#readline is used behind the scene
#Явне використання readline
print("\nExplicit use of readline\n")
with open("file4.txt", "r") as fileInUse:
str1=fileInUse.readline()
print(str1, end="")
str2=fileInUse.readline()
print(str2, end="")
str3=fileInUse.readline()
print(str3, end="")
Приклад з відео із поєднанням readline() з циклом while та застосуванням методу read():
#readline() у поєднанні з циклом while
with open("file4.txt", "r") as fileInUse:
fileLine = fileInUse.readline()
while fileLine:
print(fileLine, end="")
fileLine = fileInUse.readline()
print()
#для невеликих файлів можна
#використовувати метод read().
with open("file4.txt", "r") as fileInUse:
fileContent = fileInUse.read()
print(fileContent)
Приклад із застосуванням readlines() та додаванням encoding параметра з відео:
#Метод readlines() можна використовувати
#для читання всіх рядків файлу
#вони будуть збережені як список
with open("file4.txt", "r") as fileInUse:
fileContent = fileInUse.readlines()
print(fileContent)
#якщо є проблеми з кодуванням,
#можна скористатися параметром кодування
with open("file4.txt", encoding="utf8") as fileInUse:
fileContent = fileInUse.read()
print(fileContent)
Файли csv
Робота з CSV-файлами в Python зазвичай здійснюється за допомогою стандартної бібліотеки csv, яка забезпечує прості інструменти для читання та запису CSV-даних. Приклад з відео:
#У Python є модуль csv.
#Цей модуль спрощує роботу з файлами csv.
import csv
fileName = "file8.csv"
customers = [
["Solverson", 35],
["Jackson", 29]
]
with open(fileName, "w", newline="") as fileInUse:
writer = csv.writer(fileInUse)
writer.writerows(customers)
with open(fileName, "a", newline="") as fileInUse:
customer = ["Smith", 25]
writer = csv.writer(fileInUse)
writer.writerow(customer)
with open(fileName, "r", newline="") as fileInUse:
reader=csv.reader(fileInUse)
for i in reader:
print("Name: {}, Age: {}".format(i[0], i[1]))
Модуль OS
В Python є вбудований модуль os.
Цей модуль містить низку корисних функцій:
mkdir() – створює нову папку
rmdir() – видаляє папку
rename() – перейменовує файл
remove() – видаляє файл
Модуль os в Python — це стандартна бібліотека, яка надає функції для взаємодії з операційною системою. Він дозволяє виконувати різні операції, такі як робота з файлами і каталогами, отримання інформації про систему, а також управління середовищем. Приклад з відео:
import os
#використання методу mkdir
try:
os.mkdir("dir1")
with open("dir1/file.txt","w") as fileInUse:
fileInUse.write("Python is a solid choice")
with open("dir1/file.txt", "r") as fileInUse:
content = fileInUse.read()
print(content)
except Exception as e:
print(e)
Приклад з перейменуванням файлу з відео:
import os
os.rename("dir1/file.txt", "dir1/fileRenamed.txt")
with open("dir1/fileRenamed.txt", "r") as fileInUse:
content = fileInUse.read()
print(content)
Приклад з видаленням файлу та папки з відео:
import os
#delete folder dir1
os.remove("dir1/fileRenamed.txt")
os.rmdir("dir1")
В цьому відео поговоримо про: 00:07 Files 12:22 write() – “w” and “a” 15:54 Reading file 27:23 csv files 34:46 OS Module
У Python функція findall() належить до модуля re, який використовується для роботи з регулярними виразами. Ця функція шукає всі неперервні входження шаблону в рядку і повертає їх у вигляді списку. Приклад з відео:
#"RegEx", або регулярний вираз, це
#послідовність символів, яка утворює
#шаблон пошуку.
#RegEx можна використовувати, щоб перевірити,
#чи містить рядок вказаний шаблон пошуку.
#Python має вбудований пакет під назвою re,
#з яким можна працювати
#Імпортуйте модуль re.
#Функція findall() повертає список із усіма збігами.
import re
str1 = "It was raining outside."
mathcList = re.findall("rain", str1)
print(str1)
print(mathcList)
Приклад з findall(), якщо не було збігів:
#Якщо збігів не знайдено,
#повертається порожній список
import re
str1 = "It was raining outside."
matchList = re.findall("snowing",str1)
print(str1)
print(matchList)
Символ
Опис
Приклад
[]
Набір символів
“[a-m]”
\
Сигналізує спеціальну послідовність (також може використовуватися для екранування спеціальних символів)
“\d”
.
Будь-який символ (крім символу нового рядка)
“ra..g”
^
Починається з
“^It”
$
Закінчується на
“side.$”
*
Нуль або більше випадків
“ra.*g”
+
Один або кілька випадків
“ra.+g”
?
Нуль або один раз
“ra.?g”
{}
Точно вказана кількість повторень
“ra.{4}g”
|
Або або
“raining|snowing”
Метасимволи
Приклад із метсимволами з відео:
import re
str1 = "15th December. It was raining outside."
#Знайти всі символи нижнього регістру в
#алфавітному порядку між «a» і «y»:
searchResult = re.findall("[a-y]", str1)
print("All lower case characters")
print(searchResult)
#Знайти всі цифрові символи:searchResult2 = re.findall("\d", str1)
print(searchResult2)
#Пошук послідовності, яка починається з "ra", а потім чотири (будь-які)
#символи та "g":
searchResult3 = re.findall("ra....g", str1)
print(searchResult3)
Ще приклад із застосуванням метсимволів з відео:
import re
str1 = "It was raining outside."
#Перевірте, чи рядок починається з "It":searchResult = re.findall("^It", str1)
print(searchResult)
#Перевірте, чи закінчується рядок на 'side.':searchResult2 = re.findall("side.$", str1)
print(searchResult2)
#Пошук послідовності, яка починається з "ra", після чого йде 0
#або більше символів і "g":
searchResult3 = re.findall("ra.*g", str1)
print(searchResult3)
Ще один приклад з метасимволами з відео:
import re
str1 = "It was raining outside."
#Пошук послідовності, яка починається
#з "ra", за якою йде 1 або більше
# (будь-яких) символів та "g"
searchResult = re.findall("ra.+g", str1)
print(searchResult)
#Пошук послідовності, яка починається
#з "ra", після чого йде 0 або 1
#символ і "g":
searchResult2 = re.findall("ra.?g", str1)
print(searchResult2)
#Пошук послідовності, яка починається
#з "ra", з точним дотриманням
#4 символи та "g"
searchResult3 = re.findall("ra.{4}g",str1)
print(searchResult3)
#Перевірте, чи рядок містить текст "raining" чи "snowing"searchResult4 = re.findall("raining|snowing",str1)
print(searchResult4)
Також findall() можна застосовувати зі спеціальними послідовностями.
Символ
Опис
Приклад
\A
Повертає збіг, якщо вказані символи знаходяться на початку рядка
“\AThe”
\b
Повертає збіг, якщо вказані символи знаходяться на початку або в кінці слова (“r” на початку впевнюється, що рядок розглядається як “необроблений рядок”)
r”\bain” r”ain\b”
\B
Повертає збіг, якщо вказані символи присутні, але НЕ на початку (чи в кінці) слова (“r” на початку гарантує, що рядок розглядається як “необроблений рядок”)
r”\Bain” r”ain\B”
\d
Повертає збіг, якщо рядок містить цифри (числа від 0 до 9)
“\d”
\D
Повертає збіг, якщо рядок НЕ містить цифр
“\D”
\s
Повертає збіг, якщо рядок містить пробіл
“\s”
\S
Повертає збіг, якщо рядок НЕ містить пробілу
“\S”
\w
Повертає збіг, якщо рядок містить будь-які символи слова (символи від a до Z, цифри від 0 до 9 і символ підкреслення _)
“\w”
\W
Повертає збіг, якщо рядок НЕ містить символів слів
“\W”
\Z
Повертає збіг, якщо вказані символи знаходяться в кінці рядка
“Spain\Z”
Спеціальні послідовності
Приклад зі спеціальними символами з відео:
import re
str1 = "25th December. It was raining outside."
#Перевірте, чи починається рядок з "It"searchResult = re.findall("\AIt", str1)
print(searchResult)
#Перевірте, чи є слово «rain» на початку словаsearchResult2 = re.findall(r"\brain", str1)
print(searchResult2)
#Перевірте, чи є "ing" у кінці словаsearchResult3 = re.findall(r"ing\b", str1)
print(searchResult3)
#Перевірте, чи присутній "ini", але НЕ на початку словаsearchResult4 = re.findall(r"\Bini", str1)
print(searchResult4)
#Перевірте, чи містить рядок якісь цифри (від 0 до 9)searchResult5 = re.findall("\d", str1)
print(searchResult5)
Ще один приклад з відео зі спецсимволами:
import re
str1 = "25th December. It was raining outside."
#Повертати збіг для кожного символу без цифр
print("Return a match at every no-digit character")
searchResult = re.findall("\D", str1)
print(searchResult)
#Повертати збіг для кожного пробілу
print("Return a match at every white-space character")
searchResult2 = re.findall("\s", str1)
print(searchResult2)
#Повертати збіг для кожного НЕ пробілу
print("Return a match at every NON white-space character")
searchResult3 = re.findall("\S", str1)
print(searchResult3)
#Повертати збіг для кожного символу слова
#(символи від a до Z, цифри від 0 до 9 і символ підкреслення _)"
print("Return a match at every word character (characters from a to Z, digits from 0-9, and the underscore _ character)")
searchResult4 = re.findall("\w", str1)
print(searchResult4)
#Повертати збіг для кожного НЕ символу слова
#(символи НЕ між a і Z. Наприклад \"!\", \"?\" пробіл тощо)
print("Return a match at every NON word character (characters NOT between a and Z. Like \"!\", \"?\" white-space etc.)")
searchResult5 = re.findall("\W", str1)
print(searchResult5)
#Перевірте, чи закінчується рядок на \"outside.\
print("Check if the string ends with \"outside.\"")
searchResult6 = re.findall("outside.\Z", str1)
print(searchResult6)
З findall() також часто використовуються sets або набори символів.
Set
Опис
[arn]
Повертає збіг, де присутній один із указаних символів (a, r або n).
[a-n]
Повертає збіг для будь-якого символу нижнього регістру в алфавітному порядку від a до n
[^arn]
Повертає збіг для будь-якого символу, КРІМ a, r і n
[0123]
Повертає збіг, якщо присутня будь-яка з указаних цифр (0, 1, 2 або 3).
[0-9]
Повертає збіг для будь-якої цифри від 0 до 9
[0-5][0-9]
Повертає збіг для будь-яких двозначних чисел від 00 до 59
[a-zA-Z]
Повертає збіг для будь-якого символу в алфавітному порядку від a до z, нижнього АБО верхнього регістру
[+]
У наборах +, *, ., |, (), $,{} не мають спеціального значення, тому [+] означає: повертає збіг для будь-якого символу + у рядку
Набори символів
Приклад з наборами символів з відео:
import re
str1 = "25th December. It was raining outside."
#Перевірте, чи містить рядок символи j, i або wsearchResult = re.findall("[jiw]", str1)
print(searchResult)
#Перевірте, чи містить рядок символи між j і wsearchResult2 = re.findall("[j-w]", str1)
print(searchResult2)
#Перевірте, чи містить рядок інші символи, крім j, i чи wsearchResult3 = re.findall("[^jiw]", str1)
print(searchResult3)
#Перевірте, чи містить рядок 1, 2, 3, 4 або 5 цифрsearchResult4 = re.findall("[12345]", str1)
print(searchResult4)
Ще один приклад з відео з наборами символів:
import re
str1 = "25th December. It was raining outside.+"
#Перевірте, чи містить рядок цифри від 0 до 9searchResult = re.findall("[0-9]", str1)
print(searchResult)
#Перевірте, чи містить рядок двозначні числа від 00 до 99searchResult2 = re.findall("[0-9][0-9]", str1)
print(searchResult2)
#Перевірте, чи містить рядок символи
#від a до w нижнього регістру,
#і від A до Y у верхньому регістріsearchResult3 = re.findall("[a-wA-Y]", str1)
print(searchResult3)
#Перевірте, чи містить рядок символи +
searchResult4 = re.findall("[+]", str1)
print(searchResult4)
Функція search()
Функція search() у Python також належить до модуля re, який використовується для роботи з регулярними виразами. Ця функція шукає перше входження шаблону в рядку і повертає об’єкт-результат, якщо знайдено, або None, якщо входження не виявлено. Приклад з відео:
#Функція search() шукає збіг у рядку та повертає
#Match об'єкт, якщо є збіг.
#Якщо є більше одного збігу, лише перший збіг
#повернеться.
import re
str1 = "It was raining outside."
match1 = re.search("\s", str1)
print(match1)
print("Position of space: ", match1.start())
Ще один приклад із застосуванням функції search() з відео:
#Якщо збігів не знайдено,
#повертається значення None
import re
str1 = "It was raining outside."
match1 = re.search("snowing", str1)
print(match1)
Функція split()
Функція split() у Python використовується для розділення рядка на список підрядків на основі роздільника. Приклад з відео:
#Функція split() повертає список,
#де було розділено рядок
#по кожному збігу.
import re
str1 = "It was raining outside."
splitedList = re.split("\s", str1)
print(str1)
print(splitedList)
print(str1)
Ще один приклад із застосуванням функції split():
#Ви можете контролювати кількість
#повторень, вказавши
#параметр maxsplit
import re
str1 = "It was raining outside."
splitedList = re.split("\s", str1, 1)
print(str1)
print(splitedList)
Функція sub()
Функція sub() у Python належить до модуля re і використовується для заміни частин рядка, які відповідають заданому регулярному виразу, на інший рядок. Приклад з відео:
#Функція sub() замінює збіги
#текстом за вашим вибором
import re
str1 = "It was raining outside."
substitutedStr1 = re.sub("\s", "-", str1)
print(str1)
print(substitutedStr1)
Ще один приклад із sub() з відео:
#Ви можете контролювати кількість замін,
#вказавши параметр count
import re
str1 = "It was raining outside."
substitutedStr1 = re.sub("\s", "-", str1, 1)
print(str1)
print(substitutedStr1)
Match object
Match object (об’єкт відповідності) у Python є результатом виконання функцій модуля re, таких, наприклад, як search() та findall(). Цей об’єкт надає інформацію про знайдене входження регулярного виразу в рядок. Він містить різні методи та атрибути, які дозволяють отримати деталі про знайдене входження. Приклад з відео:
#Об’єкт відповідності – це об’єкт,
#що містить інформацію про пошук
#і результат.
#Якщо збігу немає, замість нього
#буде повернено значення None
import re
str1 = "It was raining outside."
searchResult = re.search("rain", str1)
print(searchResult)
Приклад з Match object та span():
#.span() повертає кортеж,
#що містить початкову та кінцеву позиції
#збігу.
#Регулярний вираз шукає будь-які слова,
#які починаються з малої літери "r"
import re
str1 = "It was raining outside."
searchResult = re.search(r"\br\w+", str1)
print(searchResult)
print(searchResult.span())
Приклад з Match object та group():
#.group() повертає частину
#рядка, де був збіг
#Регулярний вираз шукає будь-які
#слова, які починаються з малої літери "r"
import re
str1 = "It was raining outside."
searchResult = re.search(r"\br\w+", str1)
print(searchResult)
print(searchResult.group())
Приклад з Match object та string:
#.string повертає рядок, переданий у функцію
#Регулярний вираз шукає будь-які слова,
#які починаються з малої літери "r"
import re
str1 = "It was raining outside."
searchResult = re.search(r"\br\w+", str1)
print(searchResult)
print(searchResult.string)
В цьому відео поговоримо про: 00:00:08 findall() Function 00:05:20 Metacharacters – метасимволи 00:20:07 Special Sequences – Спеціальні послідовності 00:43:41 Sets – набори у регулярних виразах 00:57:07 search() Function 01:01:44 split() 01:06:40 sub() 01:09:46 Match object