Formatting Strings Using .format()

Python stringlari uzoq vaqt davomida `.format()` metodini qo‘llab kelgan.

.format() yordamida stringlarni formatlash

Python stringlari uzoq vaqt davomida .format() metodini qo‘llab kelgan. Ushbu dokumentatsiyada asosan f-stringlardan foydalaniladi, lekin .format() hamon juda mashhur ekanligini bilib olasiz.

Formatlash qanday ishlashini to‘liq tushunish uchun quyidagi manzilga qarang: Python hujjatlari

Keling, bir nechta qisqa misollar orqali .format() qanday ishlashini ko‘rib chiqamiz:

age = 18
name = 'Mike'
print('Salom {}. Davom etish uchun kamida {} yoshda bo‘lishingiz kerak!'.format(name, age))
# Natija: Salom Mike. Davom etish uchun kamida 18 yoshda bo‘lishingiz kerak!

Bu misolda pozitsion argumentlar ishlatiladi. Python ikki marta {} topadi va mos ravishda o‘zgaruvchilarni joylashtiradi. Agar yetarli argument kiritilmasa, quyidagi kabi xatolik yuzaga keladi:

print('Salom {}. Davom etish uchun kamida {} yoshda bo‘lishingiz kerak!'.format(age))
# Xato: IndexError: tuple index out of range

Bu xato .format() chaqirig‘ida yetarli elementlar yo‘qligini bildiradi.

Shuningdek, oldingi qismdagi kabi nomlangan argumentlardan foydalanishingiz mumkin:

age = 18
name = 'Mike'
print('Salom {first_name}. Davom etish uchun kamida {age} yoshda bo‘lishingiz kerak!'.format(first_name=name, age=age))
# Natija: Salom Mike. Davom etish uchun kamida 18 yoshda bo‘lishingiz kerak!

Lug‘atni .format() ga uzatish o‘rniga parametrlarni nomi bilan yuborishingiz mumkin. Aslida, agar lug‘atni uzatishga harakat qilsangiz, xatoga duch kelasiz:

print('Salom {first_name}. Davom etish uchun kamida {age} yoshda bo‘lishingiz kerak!'.format({'first_name': name, 'age': age}))
# Xato: KeyError: 'first_name'

Buning uchun quyidagi yechim mavjud:

print('Salom {first_name}. Davom etish uchun kamida {age} yoshda bo‘lishingiz kerak!'.format(**{'first_name': name, 'age': age}))
# Natija: Salom Mike. Davom etish uchun kamida 18 yoshda bo‘lishingiz kerak!

Bu biroz g‘alati ko‘rinadi, lekin Python'da ikki yulduzcha (**) shuni anglatadiki, siz funksiya nomlariga parametrlarni uzatayapsiz. Shunday qilib, Python lug‘atni first_name=name, age=age ga aylantiradi.

Siz .format() dan foydalanganda bir o‘zgaruvchini bir necha marta ishlatishingiz ham mumkin:

first_name = 'Mike'
print('Salom {first_name}. Nega seni {first_name} deb chaqirishadi?'.format(first_name=first_name))
# Natija: Salom Mike. Nega seni Mike deb chaqirishadi?

Bu yerda siz string ichida ikki marta {first_name} ga murojaat qilyapsiz va Python har ikkisini ham first_name o‘zgaruvchisi bilan almashtiradi.

Istasangiz, qiymatlarni raqamlar yordamida interpolatsiya qilishingiz ham mumkin:

print('Salom {1}. Davom etish uchun kamida {0} yoshda bo‘lishingiz kerak!'.format(first_name, age))
# Natija: Salom 18. Davom etish uchun kamida Mike yoshda bo‘lishingiz kerak!

Chunki Python'da ko‘pchilik narsalar 0 dan boshlanadi, bu misolda siz age ni {1} ga va name ni {0} ga joylashtirdingiz.

.format() bilan ishlashda keng tarqalgan kodlash uslubi bu formatlangan stringni yaratib, uni keyinchalik ishlatish uchun o‘zgaruvchiga saqlashdir:

age = 18
first_name = 'Mike'
greetings = 'Salom {first_name}. Davom etish uchun kamida {age} yoshda bo‘lishingiz kerak!'
print(greetings.format(first_name=first_name, age=age))
# Natija: Salom Mike. Davom etish uchun kamida 18 yoshda bo‘lishingiz kerak!

Bu usul yordamida siz greetings ni qayta ishlatishingiz va keyinchalik dasturingizda first_name va age uchun yangilangan qiymatlarni kiritishingiz mumkin.

Shuningdek, string kengligini va tekislashni aniqlashingiz ham mumkin:

print('{:<20}'.format('chapga tekislangan'))
# Natija: chapga tekislangan
print('{:>20}'.format('o‘ngga tekislangan'))
# Natija:        o‘ngga tekislangan
print('{:^20}'.format('markazga'))
# Natija:       markazga

Chapga tekislash sukut bo‘yicha (default) holatdir. Nuqta-vergul (:) Python'ga biror formatlashni qo‘llashingizni bildiradi. Birinchi misolda string chapga tekislangan va 20 ta belgidan iborat bo‘lishini aniqladingiz. Ikkinchi misolda ham 20 ta belgi bor, lekin u o‘ngga tekislangan. Oxirida esa ^ belgi stringni 20 ta belgi ichida markazlashtirishni bildiradi.

Oldingi misollardagidek o‘zgaruvchini uzatmoqchi bo‘lsangiz, quyidagicha bajarishingiz mumkin:

print('{example:^20}'.format(example='markazga'))
# Natija:       markazga

E'tibor bering, o‘zgaruvchi nomi : belgisidan oldin {} ichida kelishi kerak.

Hozirgi vaqtda siz .format() qanday ishlashini yaxshi tushungan bo‘lishingiz kerak.

Keling, f-string'ga o‘taylik!

Ushbu sahifada

Xato haqida xabar berish