Python format sətri

Python Simli formatlaşdırma birləşdirmək üçün çevik bir yoldur strings. Python String formatlaşdırması ilə biz elementləri sətir daxilində birləşdiririk. Buna üç fərqli üsuldan istifadə etməklə nail olmaq olar:

  • %
  • {}.format
  • Şablon sətri

Bu dərslikdə bunların hər birini ətraflı şəkildə görəcəyik.

% istifadə edərək Python sətirinin formatlanması:

'%' istifadə edərək Python-da sətir formatlaması operator C proqramlaşdırma dilində 'printf' ilə oxşardır. '%' operatoru ilə bir sıraya daxil edilmiş dəyişənlər dəsti arqument təyinediciləri yerindəki normal mətnlə birləşdirilə bilər. Budur əsas arqument təyinedicilərinin siyahısı:

  • %s-sətir
  • %d-tam ədəd
  • %f-float
  • %x-onaltılıq
  • %f-float

Tək arqument təyinedicisi:

Tək spesifikatordan istifadə edərək Python-da sətir formatlaşdırmasının istifadəsini başa düşmək üçün bir nümunəyə baxaq.

var = 12

print("String Representation: %s" %(var))
print("Integer Representation: %d" %(var))
print("Float Representation: %f" %(var))
print("Hexadecimal Representation: %x" %(var))
print("Octal Representation: %o" %(var))
String Representation: 12
Integer Representation: 12
Float Representation: 12.000000
Hexadecimal Representation: c
Octal Representation: 14

Diqqət etsəniz, burada hər hansı birini birləşdiririk məlumat növü sətirlə, açıq şəkildə sətirə çevrilmədən. Əgər '+' operatorundan istifadə edirsinizsə, dəyişən fərqlidirsə, dəyişəni 'str' istifadə edərək sətirə çevirməlisiniz. məlumat növü.

Çoxsaylı arqument təyinediciləri:

Bir sətirdə birləşdirmək üçün 2 və ya daha çox dəyişəniniz varsa, dəyişənləri dəfnə daxil edin.

name='John Doe'
age=42

print('My name is %s and age is %d' %(name,age))
My name is John Doe and age is 42

{}.formatdan istifadə edərək Python Simli Formatlaşdırma:

Sintaksis:

{}.format(value1,value2,etc.,)

{}-Yer sahibi. {} hərfini normal mətndə/sətirdə dəyərlərin daxil edilməsini istədiyiniz yerə qoyun.

.format(dəyər)-yer tutucuya daxil ediləcək dəyərlər.

Tək yertutan:

name='John Doe'

print('My name is {}'.format(name))
My name is John Doe

Çoxsaylı yer tutanlar:

Siz sətirinizdə çoxlu yertutanlardan istifadə edə bilərsiniz, onlar verilmiş qaydada format metodunda ötürülən dəyərlərlə əvəz olunacaq.

name='John Doe'
age=42

print('My name is {} and age is {}'.format(name,age))
My name is John Doe and age is 42
Səhvlər:

Çoxsaylı yer tutuculardan istifadə edərkən iki şeyə diqqət yetirməlisiniz:

  • Dəyərlər verilmiş ardıcıllıqla yer tutucuları əvəz edəcək.
name='John Doe'
age=42

print('My name is {} and age is {}'.format(age,name))
My name is 42 and age is John Doe
  • Yer tutucuların sayı formatda ötürülən dəyərlərin sayına uyğun olmalıdır.
name='John Doe'
age=42

print('My name is {} {} and age is {}'.format(age,name))
Traceback (most recent call last):
  File "sample.py", line 4, in <module>
    print('My name is {} {} and age is {}'.format(age,name))
IndexError: tuple index out of range

Mövqe arqumentləri:

İndiyə qədər gördüyümüz nümunələr bunun üçündür mövqe arqumentləri. Yer tutucuları verilmiş ardıcıllıqla ötürülən dəyərlərlə xəritələşdirdiyimiz üçün biz buna mövqe xəritələri deyirik.

Formatda keçdiyimiz dəyərlər tiplidir . Tuple sıfır indeksləşdirməni izlədiyi üçün yer tutucularda istifadə etdiyimiz rəqəmlər 0-dan başlamalıdır.

name='John Doe'
age=42

print('My name is {0} and age is {1}'.format(name,age))

Python 2.7 və yuxarı versiyalarında biz boş yer tutuculardan istifadə edə bilərik. Nömrələri müəyyən etməyə ehtiyac yoxdur, çünki onlar daxili olaraq avtomatik nömrələnəcəklər. Bununla belə, sifarişi dəyişdirmək istəyə biləcəyimiz bəzi ssenarilər var. Belə ssenarilər üçün yer tutucuların içərisindəki rəqəmlərdən istifadə edə bilərik. Belə bir misaldır

name='John Doe'
age=42

print('My name is {1} and age is {0}'.format(age,name))
My name is John Doe and age is 42

Yuxarıdakı misalda boş yer tutuculardan istifadə etsək, istədiyimiz nəticəni əldə etməyəcəyik, çünki birinci yer tutucu yaşla, ikincisi isə adla əvəz olunacaq. Çıxış "Mənim adım 42, yaşım John Doe" kimi olacaq. Yer tutucuların içərisindəki nömrələrdən istifadə etdiyimiz üçün, verilmiş nömrə ilə yertutan müvafiq dəst indeksi dəyəri ilə əvəz olunacaq. Bizim nümunəmizdə indeks 1-in dəsti birinci yertutanı, 0 indeksi isə ikinci yertutanı əvəz edir.

Açar söz arqumentləri:

Mövqe arqumentləri əvəzinə biz format funksiyasında açar söz arqumentlərindən də istifadə edə bilərik. Rəqəmlər əvəzinə biz yer tutucuların içərisində açardan istifadə edirik və açarın dəyəri format funksiyasında key=value formatında verilir. Açarın adı sizin seçiminizdədir. Sadəcə, yer tutuculardakı açarın adının format funksiyasında verilənə uyğun olduğundan əmin olun.

name='John Doe'
age=42

print('My name is {a} and age is {b}'.format(b=age,a=name))

Mövqe və açar söz arqumentlərinin birləşməsi:

Funksiyada həm mövqe, həm də açar söz arqumentlərindən istifadə edə bilərik.

name='John Doe'
age=42

print('My name is {0} and age is {a}'.format(name,a=age))

Unutmayın ki, həmişə açar söz arqumenti mövqe arqumentini izləyir, əks halda xəta alacağıq.

name='John Doe'
age=42

print('My name is {1} and age is {a}'.format(a=age,name))
  File "sample.py", line 4
    print('My name is {1} and age is {a}'.format(a=age,name))
                                                      ^
SyntaxError: positional argument follows keyword argument

Tip spesifikasiyası:

Rəqəmlər (indekslər) və yer tutuculardakı əsas adlardan başqa biz ədədi dəyərlərlə işləyərkən konversiya kodundan da istifadə edə bilərik.

Sintaksis:
string{field_name:conversion}.format(value)

sahə_adı: Format funksiyasında ötürülən dəyərin indeksi.

dönüşüm: çevrilmə kodu məlumat növü. Aşağıda çevirmə kodunun nümunələri verilmişdir:

  • s – simlər
  • d – onluq tam ədədlər (baza-10)
  • f – üzən nöqtəli ekran
  • c - xarakter
  • b - ikili
  • o – səkkizlik
  • x – 9-dan sonra kiçik hərflərlə onaltılıq
  • X – 9-dan sonra böyük hərflərlə onaltılıq
  • e – göstərici qeydi
print('{0} value of 71 is: {1:s}'.format('String','71'))
print('{0} value of 71 is: {1:d}'.format('Integer',71))
print('{0} value of 71 is: {1:f}'.format('Float',71))
print('{0} value of 71 is: {1:X}'.format('Hexadecimal',71))
print('{0} value of 71 is: {1:b}'.format('Binary',71))
String value of 71 is: 71

Tam dəyər

 of 71 is: 71
Float value of 71 is: 71.000000
Hexadecimal value of 71 is: 47
Binary value of 71 is: 1000111

Float təmsili ilə biz onluq nöqtədən sonra neçə rəqəm göstərmək istədiyimizi də təyin edə bilərik.

print('{0} value of 71 is: {1:.2f}'.format('Float',71))
print('{0} value of 71 is: {1:.1f}'.format('Float',71))
print('{0} value of 71 is: {1:.0f}'.format('Float',71))
Float value of 71 is: 71.00
Float value of 71 is: 71.0
Float value of 71 is: 71

.2f/.1f/.0f onluq nöqtədən sonra göstəriləcək müvafiq olaraq 2 rəqəm, 1 rəqəm və 0 rəqəmi təyin edir.

Error:

Biz əmin olmalıyıq ki, dönüşüm kodu və məlumat növü format funksiyasında verilən dəyər uyğun olmalıdır. Əks halda biz dəyər xətası alacağıq.

print('{0} value of 71 is: {1:d}'.format('Integer','71'))
Traceback (most recent call last):
  File "sample.py", line 2, in <module>
    print('{0} value of 71 is: {1:d}'.format('Integer','71'))
ValueError: Unknown format code 'd' for object of type 'str'

Doldurma boşluqları:

Varsayılan olaraq, sətirlər sola əsaslandırılır və tam ədədlər sağa əsaslandırılır. Ancaq düzləşdirmə kodunu və ardınca iki nöqtəni qoyaraq bunu dəyişə bilərik. Budur hizalanma kodları:

<-sola hizalayın.

>-sağa düzün.

^ -mərkəzə düzün.

print('{0} value of 71 is: {1:>16}'.format('String','71'))
String value of 71 is:               71

F-sətirləri:

Python 3-də F-strings adlı yeni simli formatlaşdırma mexanizmi var. O, sətirdən əvvəl 'f' hərfi ilə təmsil olunur. F-sətirlərinin istifadəsini başa düşmək üçün bir neçə nümunəyə baxaq.

name='John Doe'
age=42

print(f'My name is {name} and age is {age}')
details={'name':'John Doe','age':42}

print(f'My name is {details["name"]} and age is {details["age"]}')

String Şablonundan istifadə edərək Python Simli Formatlaşdırma:

Şablon sinfi çıxış spesifikasiyası üçün sintaksisi sadələşdirir. Burada yer tutucu adını yaratmaq üçün etibarlı Python identifikatoru ilə $ istifadə edirik.

from string import Template

t=Template("My Name is $name")
print(t.substitute({'name':'John Doe'}))

Biz həmçinin siyahıdan məlumatları idxal edə və şablondan istifadə edərək çap edə bilərik.

from string import Template
details=[("John Doe",42),('Jason',44)]

t=Template("Name: $name and Age: $age")
for i in details:
    print(t.substitute(name=i[0],age=i[1]))
Name: John Doe and Age: 42
Name: Jason and Age: 44
Error:

Yertutan açar söz arqumentində və ya lüğətdə təqdim edilmədiyi halda biz KeyError alacağıq.

t=Template("My Name is $name and age is $age")
print(t.substitute({'name':'John Doe'}))
Traceback (most recent call last):
  File "sample.py", line 4, in <module>
    print(t.substitute({'name':'John Doe'}))
  File "C:\Users\Gopi\AppData\Local\Programs\Python\Python36-32\lib\string.py", line 126, in substitute

    return self.pattern.sub(convert, self.template)
  File "C:\Users\Gopi\AppData\Local\Programs\Python\Python36-32\lib\string.py", line 119, in convert
    return str(mapping[named])
KeyError: 'age'

Nəticə:

Bu dərslik Python-da simli formatlaşdırma üçün əsas nümunələr. Zəhmət olmasa docs daha ətraflı məlumat üçün.

Translate »