Satrlar (str) bilan ishlash
Bu bobda
- satr ichida maxsus belgilarni:
\n,\t,\' len(), indeks va kesish (slicing) bilan satr bo'laklarini olishni- eng kerakli metodlarni:
upper,lower,capitalize,strip,replace,count,find - o'zbekcha matndagi
title()tuzog'ini - f-string bilan jadvaldek tekis chiqarishni
Satr — belgilar ketma-ketligi
Satr (string) — harflar, raqamlar, probel va boshqa belgilarning tartiblangan ketma-ketligi. "Salom" — 5 ta belgidan iborat satr.
shahar = "Samarqand" print(shahar) print(len(shahar))
Samarqand 9
len() — satr uzunligi, ya'ni undagi belgilar soni. Probel ham belgi:
print(len("Salom dunyo")) print(len(""))
11 0
"" — bo'sh satr, uzunligi 0.
Maxsus belgilar: \n, \t, \
Satr ichida \ (teskari chiziq) dan keyingi harf maxsus ma'noga ega bo'ladi:
print("Birinchi qator\nIkkinchi qator") print("Ism:\tAli") print("Fayl yo'li: C:\\Users\\Ali") print('Bu O\'zbekiston')
Birinchi qator Ikkinchi qator Ism: Ali Fayl yo'li: C:\Users\Ali Bu O'zbekiston
| Yozuv | Ma'nosi |
|---|---|
\n |
yangi qator (new line) |
\t |
tabulyatsiya (bir nechta probel) |
\\ |
teskari chiziqning o'zi |
\' va \" |
tirnoq, satr tugamasligi uchun |
Ko'p qatorli matn uchun uchtalik qo'shtirnoq """...""" qulay:
xabar = """Hurmatli talaba! Ertangi dars soat 18:00 da. Daftaringizni olib keling.""" print(xabar)
Hurmatli talaba! Ertangi dars soat 18:00 da. Daftaringizni olib keling.
Indeks: bitta belgini olish
Satrdagi har bir belgining tartib raqami — indeksi bor. Sanash 0 dan boshlanadi:
| Belgi | P | y | t | h | o | n |
|---|---|---|---|---|---|---|
| Indeks | 0 | 1 | 2 | 3 | 4 | 5 |
| Manfiy indeks | -6 | -5 | -4 | -3 | -2 | -1 |
til = "Python" print(til[0]) print(til[3]) print(til[-1]) print(til[-2])
P h n o
Manfiy indeks oxiridan sanaydi: -1 — oxirgi belgi. Satr uzunligi qanday bo'lishidan qat'i nazar, s[-1] doim oxirgi belgini beradi.
til = "Python" print(til[6])
IndexError: string index out of range
6 ta belgi bor, indekslar 0 dan 5 gacha. til[6] mavjud emas.
Kesish (slicing): bo'lakni olish
s[boshi:oxiri] — boshi indeksidan oxiri gacha (oxiri kirmaydi) bo'lakni beradi:
soz = "Toshkent" print(soz[0:4]) print(soz[4:8]) print(soz[:4]) print(soz[4:]) print(soz[-4:])
Tosh kent Tosh kent kent
[:4]— boshidan 4 ta belgi.[4:]— 4-indeksdan oxirigacha.[-4:]— oxirgi 4 ta belgi.
Nega oxiri kirmaydi?
Shunda s[:n] + s[n:] har doim butun satrni beradi va s[a:b] uzunligi b − a ga teng: soz[0:4] — 4 ta belgi.
Uchinchi qiymat — qadam (step):
raqamlar = "0123456789" print(raqamlar[::2]) print(raqamlar[1::2]) print(raqamlar[::-1])
02468 13579 9876543210
[::-1] — satrni teskari aylantirishning eng qisqa yo'li.
Kesishda chegaradan chiqib ketish xato bermaydi, Python borini oladi:
print("Python"[2:100])
thon
Satrni o'zgartirib bo'lmaydi
Satr o'zgarmas (immutable): uning belgisini almashtirib bo'lmaydi.
soz = "kitob" soz[0] = "K"
TypeError: 'str' object does not support item assignment
Buning o'rniga yangi satr yasaladi va o'sha nomga bog'lanadi:
soz = "kitob" soz = "K" + soz[1:] print(soz)
Kitob
Metodlar
Metod — satrga "yopishgan" funksiya. U nuqta bilan chaqiriladi: satr.metod().
ism = "abulqosim RAFIQOV" print(ism.upper()) print(ism.lower()) print(ism.capitalize()) print(ism.title())
ABULQOSIM RAFIQOV abulqosim rafiqov Abulqosim rafiqov Abulqosim Rafiqov
title() va o'zbekcha apostrof
print("o'zbekiston".title()) print("g'ulom".title()) print("o'zbekiston".capitalize())
O'Zbekiston G'Ulom O'zbekiston
title() har bir so'z boshini katta qiladi va apostrofni so'z chegarasi deb hisoblaydi: O'Zbekiston. Bitta so'z bo'lsa capitalize() ishlating. Bir nechta so'zli ism uchun yechimni 9-bobda (split()) ko'ramiz.
Metod satrni o'zgartirmaydi, yangi satr qaytaradi:
ism = "ali" ism.upper() print(ism) ism = ism.upper() print(ism)
ali ALI
Natijani saqlash uchun uni qayta o'zgaruvchiga bog'lash kerak.
Probellarni tozalash
Foydalanuvchi ko'pincha bilmasdan boshida yoki oxirida probel qoldiradi:
kiritilgan = " Toshkent " print(f"[{kiritilgan}]") print(f"[{kiritilgan.strip()}]") print(f"[{kiritilgan.lstrip()}]") print(f"[{kiritilgan.rstrip()}]")
[ Toshkent ] [Toshkent] [Toshkent ] [ Toshkent]
strip() — ikki tomondan, lstrip() — chapdan, rstrip() — o'ngdan. input() dan keladigan matnni deyarli doim .strip() qilish yaxshi odat.
Qidirish va almashtirish
gap = "Python oson. Python kuchli. Python mashhur." print(gap.count("Python")) print(gap.find("oson")) print(gap.find("qiyin")) print(gap.replace("Python", "Java")) print(gap.replace("Python", "Java", 1))
3 7 -1 Java oson. Java kuchli. Java mashhur. Java oson. Python kuchli. Python mashhur.
count(x)—xnecha marta uchraydi.find(x)—xbirinchi uchragan indeks; topilmasa -1.replace(eski, yangi)— hammasini almashtiradi; uchinchi qiymat — nechtasini.
in operatori "ichida bormi?" savoliga True yoki False bilan javob beradi:
email = "talaba@pysphere.uz" print("@" in email) print("gmail" in email) print(email.startswith("talaba")) print(email.endswith(".uz"))
True False True True
Tekshirish metodlari
print("2026".isdigit()) print("20.5".isdigit()) print("Salom".isalpha()) print("Salom dunyo".isalpha())
True False True False
isdigit() — hamma belgi raqammi. "20.5" da nuqta bor, shuning uchun False. isalpha() — hamma belgi harfmi; probel harf emas.
| Metod | Nima qiladi | " Salom " uchun |
|---|---|---|
upper() |
hammasi katta | " SALOM " |
lower() |
hammasi kichik | " salom " |
strip() |
chetdagi probellarni olib tashlaydi | "Salom" |
replace("a", "o") |
almashtiradi | " Solom " |
count("a") |
sanaydi | 1 |
find("l") |
indeksini topadi | 4 |
f-string bilan tekis chiqarish
f-string ichida : dan keyin kenglik va tekislash berish mumkin: < chapga, > o'ngga, ^ o'rtaga.
print(f"[{'Ali':<10}]") print(f"[{'Ali':>10}]") print(f"[{'Ali':^10}]")
[Ali ] [ Ali] [ Ali ]
Buning yordamida chiroyli jadval chiqarish mumkin:
print(f"{'Mahsulot':<10}{'Narx':>12}") print("-" * 22) print(f"{'Non':<10}{4000:>12,}") print(f"{'Sut':<10}{12500:>12,}") print(f"{'Guruch':<10}{21000:>12,}")
Mahsulot Narx ---------------------- Non 4,000 Sut 12,500 Guruch 21,000
{4000:>12,} — 12 belgi joyda o'ngga tekislab, xonalarga ajratib chiqar.
Kitoblarda
- Python asoslari: satrlar 21–27-betlar, satrlarni formatlash 28–29-betlar.
- Python Crash Course: 2-bob, Strings 19–25-betlar (
title,upper,lower, f-string,\n,\t,strip).
Xulosa
- Indeks 0 dan boshlanadi,
-1— oxirgi belgi. s[a:b]—adanbgacha,bkirmaydi;s[::-1]— teskari.- Satr o'zgarmas: metodlar yangi satr qaytaradi, natijani saqlang.
- O'zbekcha so'zlarda
title()emas,capitalize(). find()topmasa -1 beradi;in—True/False.f"{x:<10}",f"{x:>10}",f"{x:^10}"— tekislash.
Mashqlar
Satrlarni input() bilan oling. Matnli javob aynan ko'rsatilgandek chiqishi kerak.
Foydalanuvchi ismini kichik harflar bilan kiritadi. Salom, <Ism>! ko'rinishida, ismning birinchi harfini katta qilib chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| ali | Salom, Ali! |
| o'tkir | Salom, O'tkir! |
| sarvinoz | Salom, Sarvinoz! |
Yechimni ko'rish
ism = input() print(f"Salom, {ism.capitalize()}!")
So'z berilgan. Uni teskari tartibda chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| Python | nohtyP |
| kitob | botik |
| a | a |
Yechimni ko'rish
s = input() print(s[::-1])
So'z berilgan. Uning uzunligini chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| Samarqand | 9 |
| olma | 4 |
| O'zbekiston | 11 |
Yechimni ko'rish
print(len(input()))
Gap berilgan. Undagi a harfi necha marta uchrashini chiqaring (faqat kichik a).
| Kirish | Kutilgan natija |
|---|---|
| Salom dunyo | 1 |
| banana | 3 |
| Toshkent | 0 |
Yechimni ko'rish
print(input().count("a"))
Gap berilgan. Undagi so'zlar sonini toping. So'zlar orasida aynan bitta probel bor. Maslahat: probellar soni + 1.
| Kirish | Kutilgan natija |
|---|---|
| Men Python o'rganyapman | 3 |
| Salom | 1 |
| bir ikki uch tort besh | 5 |
Yechimni ko'rish
print(input().count(" ") + 1)
Telefon raqami 9 ta raqam ko'rinishida berilgan, masalan 901234567. Uni +998 90 123 45 67 ko'rinishida chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 901234567 | +998 90 123 45 67 |
| 935550011 | +998 93 555 00 11 |
Yechimni ko'rish
t = input() print(f"+998 {t[:2]} {t[2:5]} {t[5:7]} {t[7:]}")
Familiya va ism bitta probel bilan berilgan, masalan rafiqov abulqosim. Bosh harflarni nuqta bilan chiqaring: R.A. Maslahat: probelning indeksini find() bilan toping.
| Kirish | Kutilgan natija |
|---|---|
| rafiqov abulqosim | R.A. |
| karimova sarvinoz | K.S. |
| ali valiyev | A.V. |
Yechimni ko'rish
s = input() i = s.find(" ") print(f"{s[0].upper()}.{s[i + 1].upper()}.")
Gapda yomon so'zi uchrasa, uni ***** ga almashtiring.
| Kirish | Kutilgan natija |
|---|---|
| bu yomon fikr | bu ***** fikr |
| yomon emas, yomon | ***** emas, ***** |
| hammasi yaxshi | hammasi yaxshi |
Yechimni ko'rish
print(input().replace("yomon", "*****"))
Fayl nomi berilgan, masalan rasm.png. Uning kengaytmasini (nuqtadan keyingi qismini) chiqaring. Nuqta bitta.
| Kirish | Kutilgan natija |
|---|---|
| rasm.png | png |
| hisobot.xlsx | xlsx |
| dars.ipynb | ipynb |
Yechimni ko'rish
f = input() print(f[f.find(".") + 1:])
Bu bobni bepul o'qidingiz.
Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.