Skip to content

Satrlar bilan ishlash

Biz ma'lumot turlari mavzusida satr turi bilan tanishib o'tgan edik. Satrlar str toifasida bo'ladi. Quyida str toifasida o'zgaruvchi e'lon qilish va turini aniqlashni ko'rib o'tamiz.

satr = "Bu satr o'zgaruvchisi."
print("star = ", satr, " satrning turi: ", type(satr))

Natija:

star =  Bu satr o'zgaruvchisi.  satrning turi:  <class 'str'>

Satrlar bilan qanday amallarni bajarishimiz mumkin?

Ikkita satrni bir-biriga qo'shish

Dastur tuzish davomida bir nechta satrlarni qo'shiga to'g'ri kelishi mumkin. Bunga misol qilib sayt foydalanuvchilarining ism va familyasini birlashtirib chiqarishni olishimiz mumkin. Quyida shunga doir misola ko'ramiz.

1
2
3
4
ism = "Farrux"
familya = "Elomonov"
toliq_ism = ism + familya
print(toliq_ism)

Natija:

FarruxElomonov
Ko'rib turganingizdek bizni misolimizda ism va familya orasida bo'sh joysiz natija oldik. Sababi Python ikki o'zgaruvchini to'g'ridan to'g'ri qo'shadi. Bu xatoni quyidagich yechishimiz mumkin.

1
2
3
4
ism = "Farrux"
familya = "Elomonov"
toliq_ism = ism + ' ' + familya
print(toliq_ism)

Natija:

Farrux Elomonov

Biz ikkala o'zgaruvchi orasiga bo'sh joy qo'shib muamoga yechim topdik. Buni boshqa ko'rinishdaham amalga oshirsak bo'ladi ortiqcha qo'shishlarsiz.

1
2
3
4
ism = "Farrux"
familya = " Elomonov"
toliq_ism = ism + familya
print(toliq_ism)

Natija:

Farrux Elomonov
Bu yerda biz familya oldidan bitta bo'sh joy qo'shib qo'ydik. Sizningcha yana qanday yo'li mavjud? Bu yo'lni topish o'zingiz izlanib ko'ring.

Satr uzunligini aniqlash

Satrlar bilan ishlaganimzda satrlarni uzunligi bizga juda ko'p hollarda kerak bo'ladi. Satrlarni uzunligini aniqlash uchun Pythonda len deb nomlangan o'zining maxsus funksiyasi mavjud. Quyida bu funksiyadan qanday foydalanishni ko'rib chiqamiz.

1
2
3
4
satr = "Satr uzunligini aniqlash"
satr_uzunligi = len(satr)
print("Satr uzunligi:", satr_uzunligi)
print("Satr uzunligi:", len(satr))

Natija:

Satr uzunligi: 24
Satr uzunligi: 24

Biz natijani ikki xil usulda chiqardik. Birinchi usulda o'zgaruvchiga satr uzunligini tayinladik. Ikkinchisida to'g'ridan-to'g'ri print funksiyasi bilan birga chiqardik. Ikkala xolat ham to'g'ri har bi dasurchi o'z vaziyatiga qarab ishlatishi mumkin.

Bir necha qatorli satr yozish

1
2
3
4
5
6
satr = """
Satrning birinchi qatori
Ikkinchi qator
Uchinchi qator
"""
print(satr)
Bu usulda satr qanday holatda yozilsa shu holatda chop etiladi.

Satrlarni tekshirish

Satrlarni tekshirish deganda bir satrning qismi ikkinchisining ichida mavjud yoki yo'qligini tekshirish uchun xizmat qiladi. Buni in operatori yordamida amalga oshiramiz.

1
2
3
4
satr = "Mening ismim Farrux"
qism = "ism"
natija = qism in satr
print(natija)

Satrdan qism satr kesish

Satrlar xotirada ketma-ket saqlanadi. Ya'ni massiv(list) ko'rinishida saqlanadi. Har bir belgi o'zini o'rniga ega bo'ladi. Belgilarning xotiradagi o'rni 0 dan boshlanadi. Misol uchun a = "Satr" o'zgaruvchisi xotirada quiydagicha saqlanadi. S - harfi 0 index(o'rinda) joylashadi.

Misol:

satr = "Bu satr"
print(satr)

Bizni misolimizda indexlar quyidagi tartibda:

1
2
3
4
5
6
7
B = [0]
u = [1]
  = [2]
s = [3]
a = [4]
t = [5]
r = [6]

Agar satrdan birinchi belgini olmoqchi bo'lsak quyidagicha bo'ladi.

satr = "Bu satr"
print(satr[0])

Natija:

B
Agar [1] yozadigan bo'lsak natija u bo'ladi. Amaliyotda o'zgartirib kiritib ko'ring.

Agarda satr uzunligidan katta bo'lgan index kiritsak index xatoligi sodir bo'ladi.

satr = "Bu satr"
print(satr[7])

natija:

IndexError: string index out of range

Endi satrlarni faqat bitta belgini emas ma'lum bir qismni kesib olishni ko'rib chiqamiz. Aytayili bizga Bu satr degan so'zdan Bu so'zini ajratib olish vazifasi qo'yildi bu holatlar uchun Pythonda maxsusu imkoniyatlar bor. Bu Slicing(kesish) deyiladi.

Kesiib olish kerak bo'lgan qismni boshlang'ich(start) va tugash indexlari(end) orqali kesib olish mumkin bo'ladi. Sintaksisi quyidagicha:

satr = "Bu satr"
kesilgan_satr = satr[start:end]
Endi amaliyotda sinab ko'ramiz.

1
2
3
satr = "Bu satr"
kesilgan_satr = satr[0:1]
print(kesilgan_satr)

Natija:

B

Misolimizda u [1] indexda edi nega u chop qilinmadi deyishingiz mumkin, chunki slicing da start olinadi end esa end-1 qoidasida ishlaydi. Shuning uchun oxirgi olinishi kerak bo'lgan element indexiga 1 ni qo'shib kiritsh kutilgan natijani olishga sabab bo'ladi. Endi esa bu so'zini kesib olamiz.

1
2
3
satr = "Bu satr"
kesilgan_satr = satr[0:2]
print(kesilgan_satr)

Natija:

Bu

Endi sizga vazifa bo'ladi: to'liq ism sharifingizni fish deb nomlangan o'zgaruvchida saqlang va ismingizni slicing qiling.

Satrga o'zgartirish kiritish

Satrlarni o'zgartirish holatlariham uchrab turadi. Misol uchun satrdagi bo'sh joylarni tozalash, katta harfga o'girish yoki kichik harfga o'girish. Bunday holatlar uchun ham Pythonda satrlar bilan ishlash uchun maxsus funksiyalar mavjud.

Aytaylik bizga shunday vazifa qo'yildi: Foydalanuvchi ismini kiritganidan so'ng ismini katta harflar bilan qabul qilib oling. Chunki har doim ham foydalanuvchilar qoidalarga amal qilmaydi yoki tasodifan to'g'ri kiritmaydi. Bunday vaziyatlar uchun dasutruchi ham tayyor turishi zarur.

Misol:

fish = input("Ismingizni katta harflar bilan kiriting: ")
print(fish)

Natija:

Ismingizni katta harflar bilan kiriting: SArdor
SArdor

E'tibor bergan bo'lsangiz aralash tartibda ma'lumotlar kritildi. Bu muamoga quyidagich yechim qilishimiz mumkin.

fish = input("Ismingizni katta harflar bilan kiriting: ")
print(fish.upper())

Natija:

Ismingizni katta harflar bilan kiriting: SArdor
SARDOR
Bu misolda upper funksiyasidan foydalandik. Bu funksiya belgilarni katta harflarga o'girishga yordam beradi.

Bu bilan biz ma'lumotlarni to'g'ri va toza holatda saqlaymiz. Agar har xil korinishda saqlasak bu bizga juda ko'p noqulayliklarga olib keladi.

Endigi vazifamiz foydalanuvchi email manzlini ham kiritsin ism shrifini katta harflarda email manzilini esa kichik harflarda qabul qilishimiz kerak. Ism uchun upper, email uchun esa kichik harflarga o'girish funkisyasi lowedan foydalanamiz.

1
2
3
4
fish = input("Ismingizni katta harflar bilan kiriting: ")
email = input("Emailingizni kiriting: ")
print("FISH:", fish.upper())
print("E-MAIL", email.lower())

Natija:

Ismingizni katta harflar bilan kiriting: SArdor
Emailingizni kiriting: [email protected]
FISH: SARDOR
E-MAIL [email protected]

Satrni formatlash

Satrlani formatlash uchun Pythonda format funksiyasi va f"" sintaksisi mavjud.

f"" sintaksisidan quyidagi tartibda foydalanish mumkin:

1
2
3
4
fish = input("Ismingizni katta harflar bilan kiriting: ")
email = input("Emailingizni kiriting: ")
natija = f"FISH: {fish.upper()}, EMAIL: {email.upper()}"
print(natija)

Natija:

Ismingizni katta harflar bilan kiriting: SardoR
Emailingizni kiriting: [email protected]
FISH: SARDOR, EMAIL: [email protected]

f"" ko'rinishida formatlash bizga bitta satr bilan ishlash uchun juda qulay bo'ladi. Boshqa usullar ham mavjud lekin bu dasturni tushunarli va oson o'qilishiga sbabchi bo'ladi. {} belgilaridan foydalanish uchun "" oldidan f ni qo'yish majburiy hisoblanadi qagar qo'yilmasa Python bu satrni formatlash zarurligini tushunmaydi va oddiy satr deb qabul qiladi. f qo'yilsa Python formatlashga tayyor bo'ladi va har bir {} belgilari kelganda uning qiymatlarini tekshirib natijani qaytaradi.

format funksiyasidan quyidagi tartibda foydalanamiz:

1
2
3
4
fish = input("Ismingizni katta harflar bilan kiriting: ")
email = input("Emailingizni kiriting: ")
natija = "FISH: {}, EMAIL: {}".format(fish, email)
print(natija)

Natija:

Ismingizni katta harflar bilan kiriting: Sardor
Emailingizni kiriting: [email protected]
FISH: Sardor, EMAIL: [email protected]

Bu misolimizda nimani tushundingiz? Keling tushunishga haraka qilib ko'ramiz. format funksiyasi satr oxirga . bilan qo'shiladi va bir qancha qiymatlar qabul qiladi. Har bir qiymatni satr ichida joylashgan {} belgilar o'rniga joylashtiradi. Joylashtirish tartibi quyidagicha: 1. format ichida yozilgan ketma ketlikda satr ichidagi {} belgilar o'rniga joylashtiriladi. Ya'ni "{}, {}, {}".format(1, 2, 3) bo'lsa natija 1, 2, 3 bo'ladi. 2. Satr ichiga joylangan {} belgilarga tartib raqamini berishimiz mumkin. Aniqroq aytganda .format da joylashgan o'rnini satr ichidagi {} belgilarga qo'shamiz. Misol uchun "{1}, {0}, {2}".format(1, 2, 3) bo'lsa natija 3, 1, 2 bo'ladi. Bu yerda bir narsa e'tiborli bo'ling format funksiyasini tartiblash uchun indexlar 0 dan boshlanadi.
3. Satrlarda format funksiyai bilan formatlashni yana bir yo'li bu kalit so'zlar yordamida. Biz yuqorida index lar orqali tartib raqami bilan joylashtirdik. Xaxsus kalit so'zlar orqali ham formatlash mumkin. "{bir}, {uch}, {ikki}".format(bir=1, ikki=2, uch=3) bo'lsa natija 1, 3, 2 bo'ladi. Kalit so'zlar orqali formatlash adashish ehtimoligini kamaytiradi.

Misollar:

1
2
3
print("{2}, {1}, {0}".format(0, 1, 2))
print("{}, {}, {}".format(1, 2, 3))
print("{bir}, {uch}, {ikki}".format(bir=1, ikki=2, uch=3))

Bu misllarni har birini ishlatib ko'ring va tahlil qiling. Sizga satrlarni formatlash uchun quyida vazifa qoldiraman.

Foydalanuvchi ismi, tug'ilgan yili, manzilini ekrandan kiritsin, natijani quyidagicha chiqaruvchi dastur tuzing.

Mening ismim [ism_uchun_joy], Yoshim [yosh_uchun_joy]. [manzil] da yashayman.

Satrlar bilan ishlash uchun boshqa funksiyalar

Quyida matnli toifa bilan ishlaydaigan funksiyalarni jadval ko'rinishida keltirib o'tdim.

Funksiya(method) Ta'rif
capitalize() Satrning birinchi belgisini katta harflarga o'giradi.
casefold() Satrni kichik harfalarga o'giradi.lowerdan asosiy farqi barcha unicode larni qo'llab quvatlaydi. Straße==strasse
center() Satrni markazga joylashtiradi.
count() Maxsus belgilar sonini qaytaradi.
encode() Satrni encode qilingan ko'rinishini qaytaradi
endswith() True, qaytaradi agar ko'rsatilgan belgi bilan tugasa ak holda False.
expandtabs() So'zga belgilangan uzunlikdagi tab qo'shadi
find() Satrdan berilgan qiymatni topadi va joylashgan o'rnini qaytardi agar mavjud bo'lsa.
format() Satrni formatlash uchun.
format_map() Dict turidagi ma'lumot bilan satrni formatlaydi
index() Satrdan berilgan qiymatni topadi va joylashgan o'rnini qaytardi agar mavjud bo'lsa.
isalnum() Agar satrdagi barcha belgilar harf va sonlar bo'lsa, True qiymatini qaytaradi
isalpha() Agar satrdagi barcha belgilar harf bo'lsa True qiymatini qaytaradi
isascii() Agar satrdagi barcha belgilar ascii belgilar bo'lsa, True qiymatini qaytaradi
isdecimal() Agar satrdagi barcha belgilar o'nli kasr bo'lsa, True qiymatini qaytaradi
isdigit() True qiymat qaytaradi agar satrning barcha belgilari raqam bo'sa.
isidentifier() Agar satr identifikator bo'lsa, True qiymatini qaytaradi
islower() True qiymat qaytaradi agar barcha belgilar katta harf bo'lsa.
isnumeric() True qiymat qaytaradi agarda barcha belgilar raqam bo'lsa.
isprintable() True qiymat qaytaradi agarda matnni chop qilish mumkin bo'lsa.
isspace() Agar satrdagi barcha belgilar bo'sh joy bo'lsa, True qiymatini qaytaradi
istitle() Agar satr sarlavha qoidalariga rioya qilsa, True qiymatini qaytaradi
isupper() True qiymat qaytaradi agarda barcha qiymatlar KATTA(UPPER) harflar bo'lsa.
join() join() usuli - bu Python-da satrlar ketma-ketligini ma'lum bir ajratuvchi bilan birlashtirish uchun ishlatiladigan string usuli. U iteratsiyani oladi (masalan, ro'yxat, kortej yoki satr) va yangi satrni qaytaradi, bunda takrorlanuvchi elementlar ajratuvchi sifatida chaqirilgan satr yordamida birlashtiriladi.
ljust() satrni chap tomonini maxsusu belgila bilan to'ldiradi.
lower() Satrni kichik harflarga o'giradi.
lstrip() Satrni chap tomondan kesilgan holatini qaytaradi.
maketrans() Tarjimalarda foydalanish uchun tarjima jadvalini qaytaradi
partition() Berilgan qiymatni qismga bo'ladi va kortej ko'rinishida qaytaradi.
replace() Berilgan qiymatni, berilgan qiymat bilan almashtirilgan satrni qaytaradi
rfind() Belgilangan qiymat uchun satrni qidiradi va u topilgan joyning oxirgi holatini qaytaradi
rindex() Berilgan belgini qidiradi va oxirgi indexini qaytaradi.
rjust() Satrni o'ng tomondan tekislaydi
rpartition() Berilgan qiymatni chap tomondan qismga bo'ladi va ro'yxat ko'rinishida qaytaradi.
rsplit() Chap tomondan kesilgan satrni ro'yxat ko'rinishda qaytardi
rstrip() Chap tomondan kesilgan matnni qaytaradi.
split() Berilgan maxsus belgi bilan matnni list k'rinishda ajratadi.
splitlines() Qatorni qatorlar oralig'ida ro'xat ko'rinishida qaytaradi.
startswith() True qilynat qaytaradi agar satr berilgan belgilar bilan boshlansa.
strip() Matnni kesilgan ko'rinishini qaytaradi.
swapcase() Regestrlarni lamashtiradi kattani kichik, kichikni esa kattaga.
title() Matndagi har bir so'zdagi birinchi harfni katta harfga o'zgartiradi.
translate() Tarjima qilingan matnni qaytaradi
upper() Mattni katt harflarga o'girish
zfill() Matnni boshidan 0 bilan to'ldiradi

Endi har biriga misol keltirib o'taman.

capitalize()


casefold()


center()


count()


encode()


endswith()


expandtabs()


find()


format()


format_map()


index()


isalnum()


isalpha()


isascii()


isdecimal()


isdigit()


isidentifier()


islower()


isnumeric()


isprintable()


isspace()


istitle()


isupper()


join()


ljust()


lower()


lstrip()


maketrans()


partition()


replace()


rfind()


rindex()


rjust()


rpartition()


rsplit()


rstrip()


split()


splitlines()


startswith()


strip()

swapcase()

title()

translate()

upper()

zfill()