|
O’zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti mustaqil ish mavzu: Python dasturlash tilining maxsus kutubxonalaridan foydalangan
|
bet | 5/6 | Sana | 20.05.2024 | Hajmi | 41,69 Kb. | | #245272 |
Bog'liq Mashinali. o\'qitish. Mustaqil ishpprint - CHIROYLI PRINT
pprint moduli yordamida turli o'zgaruvchilarni chiroyli ko'rinishda konsolga chiqarishimiz mumkin. Bu bizga uzun lug'atlar, JSON fayllar yoki matnlar bilan ishlashda juda asqotadi.
Misol uchun, avvalgi darslarimizning birida yaratgan bemor.json faylini ochamiz va avval print() keyin pprint() yordamida konsolga chiqaramiz.
190B
bemor.json
Copy
from pprint import pprint
import json
filename = 'bemor.json'
with open(filename) as f:
bemor = json.load(f)
print(bemor)
Natija:
Copy
{'ism': 'Alijon Valiyev', 'yosh': 30, 'oila': True, 'farzandlar': ['Ahmad', 'Bonu'], 'allergiya': None, 'dorilar': [{'nomi': 'Analgin', 'miqdori': 0.5}, {'nomi': 'Panadol', 'miqdori': 1.2}]}
Navbat pprint() funksiyasiga:
Copy
pprint(bemor)
Natija:
Copy
{'allergiya': None,
'dorilar': [{'miqdori': 0.5, 'nomi': 'Analgin'},
{'miqdori': 1.2, 'nomi': 'Panadol'}],
'farzandlar': ['Ahmad', 'Bonu'],
'ism': 'Alijon Valiyev',
'oila': True,
'yosh': 30}
RegEx - ANDOZA YORDAMIDA MATN IZLASH
Pythondagi juda foydali modullardan biri bu re (regular expressions) moduli. Bu modul yordamida biror matn berilgan andozaga tushish, tushmalsigini tekshrib ko'rishimiz mumkin. Yoki berilgan andoza asosida matnlar orasidan kerakli matnlarni ajratib olish mumkin.
Keling boshlanishiga sodda misol ko'ramiz. Quyida biz 3 ta so'z va so'zlarni tekshirish uchun andoza yaratdik. Quyidagi andozamiz т harfidan boshlanuvchi (^т), р harfiga tugovchi (р$), 5 harfdan iborat so'zlarni qidiradi (^т...р$).
Avvaliga andozalarni tushunish biroz qiyin bo'lishi mumkin, lekin vaqt o'tishi bilan andoza qanday ishlashini tushunib olasiz deb umid qilamiz.
So'zlarni andozaga solishtirish uchun re.match() funksiyasidan foydalanamiz. Agar tekshirgan so'zimiz andozaga mosh tushsa, re.match() metodi so'zni o'zini qaytaradi, aks holda None qiymatini qaytaradi.
Copy
import re
word1 = "темир"
word2 = "томир"
word3 = "тулпор"
andoza = "^т...р"
print(re.match(andoza, word1))
print(re.match(andoza, word2))
print(re.match(andoza, word3))
Natija:
Copy
None
Natijadan ko'rishimiz mumkin, word1 va word2 o'zgaruvchilari anfozaga tushdi, word3 esa tushmadi.
Keling endi, so'z to'pish o'yinida ishlatilgan soz'lar ro'yxatidan foydalanamiz, va ro'yxatdan biz bergan andozaga tushuvchi so'zlarni ajratib olamiz.
Copy
from uzwords import words
andoza = "^т...р$"
matches = []
for word in words:
if re.match(andoza,word):
matches.append(word)
print(matches)
Natija:
Copy
['табар', 'табор', 'тавир', 'тайёр', 'татар', 'татир', 'тахир', 'тақир', 'театр', 'тембр', 'темир', 'темур', 'тенор', 'тикер', 'тихир', 'товар', 'товор', 'тожир', 'томир', 'тонер', 'тоҳир', 'триер', 'тумор', 'тўпар', 'тўпир']
Andozalar biror matnda biz uchun kerakli maʻlumotlarni ajratib olish uchun juda qulay. Masalan, Telegram orqali yuborilgan habardan email manzilini yoki telefon raqamini ajratib olish uchun maxsus andoza yozishmiz mumkin. ihateregex.io sahifasidan esa loyihangiz uchun tayyor andozalarni topishingiz mumkin.
ihateregex.io sahifasida email uchun andoza
Keling, yuqoridagi andoza asosida biror matndan email manzilini ajratib olamiz. Buning uchun re.findall() funksiyasidan foydalanamiz.
Copy
matn = """Maqolalar 2020-yilning 20-martiga qadar rtmkonferensiya2021@mail.ru elektron pochtasida qabul qilinadi.
Quyidagi yo'nalishdagi maqolalar qabul qilinadi:
👉 Aniq va tabiiy fanlarni zamonaviy pedagogik texnologiyalar asosida o‘qitish metodikasi.
👉 Umumta’lim fanlarini o‘qitishda STEAM yondashuvning o’rni va ahamiyati. """
andoza = '[^@ \t\r\n]+@[^@ \t\r\n]+\.[^@ \t\r\n]+'
email = re.findall(andoza,matn)
print(email)
Natija: ['rtmkonferensiya2021@mail.ru']
Andoza yordamida foydalanuvchi kiritgan qiymatlarni ham ma'lum shartlarga javob berishini tekshirib olishimiz mumkin:
Copy
# Kuchli parolni tekshirish
# Quyidagi andoza ham ihateregex.io sahifasidan olindi
andoza = '^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$'
msg = "Yangi parol kiriting"
msg += '(kamida 8 belgidan iborat, kamida 1 ta lotin bosh harf, 1 ta kichik harf, '
msg += '1 ta son va 1 ta maxsus belgi boʻlishi kerak): '
while True:
password = input(msg)
if re.match(andoza,password):
print("Maxfiy so'z qabul qilindi")
break
else:
print("Maxfiy so'z talabga javob bermadi")
|
|
Bosh sahifa
Aloqalar
Bosh sahifa
O’zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti mustaqil ish mavzu: Python dasturlash tilining maxsus kutubxonalaridan foydalangan
|