String format() methodu, verilen dizeyi Python’da daha güzel bir çıktıya biçimlendirir.
format() yönteminin sözdizimi şöyledir:
1 2 3 | template.format(p0, p1, ..., k0=v0, k1=v1, ...) |
Burada p0, p1, … konumsal argümanlar ve k0, k1, … sırasıyla v0, v1, … değerlerine sahip anahtar kelime argümanlarıdır.
ve template, bağımsız değişkenler için yer tutucularla birlikte biçim kodlarının bir karışımıdır.
Dize format() Parametreleri
format() yöntemi herhangi bir sayıda parametre alır. Ancak, iki tür parametreye ayrılmıştır:
- Konumsal parametreler(Positional parameters)– küme parantezleri içindeki parametre dizini ile erişilebilen parametrelerin listesi {index}
- Anahtar kelime parametreleri(Keyword parameters) – küme parantezleri içindeki parametre anahtarıyla erişilebilen anahtar = değer türündeki parametrelerin listesi {key}
String format() Mehodunun Dönüş Değeri
format() yöntemi, biçimlendirilmiş dizeyi döndürür.
String format() Nasıl Çalışır?
format() kendisine iletilen argümanların türünü okur ve dizede tanımlanan format kodlarına göre formatlar.
Konumsal parametreler
1 2 3 4 5 | cikti="Merhaba {0}, bakiyeniz {1:9.3f}".format("Ahmet",1234.456789) print(cikti) |
Küme parantezleri, yalnızca argümanların yerleştirileceği yer tutuculardır. Yukarıdaki örnekte, {0} “Ahmet” için yer tutucudur ve {1: 9.3f}, 1234.456789 için yer tutucudur.
Şablon dizesi format() bağımsız değişkenlerine {0} ve {1} olarak başvurduğundan, bağımsız değişkenler konumsal bağımsız değişkenlerdir. {} ve Python dahili olarak bunları sayılara dönüştürdüğü için her ikisine de sayılar olmadan başvurulabilir.
Dahili olarak,
- “Ahmet” 0. argüman olduğundan, {0} yerine yerleştirilir. {0} başka herhangi bir biçim kodu içermediğinden, başka herhangi bir işlem gerçekleştirmez.
- Ancak, 1. argüman 1234.456789 için durum böyle değildir. Burada {1: 9.3f} yerine 1234.457 yerleştirir ve 9.3f işlemini gerçekleştirir.
- f, biçimin bir ondalık sayı ile ilgilendiğini belirtir. Doğru şekilde belirtilmezse, bir hata verecektir.
- “.” (9), sayının (1234.457) alabileceği minimum genişliği / dolguyu belirtir. Bu durumda, 1234.457 ve “.” dahil minimum 9 yer tahsis edilir.
- Hizalama seçeneği belirtilmezse, kalan boşlukların sağına hizalanır. (Dizeler için sola hizalanır.)
- “.” (3) ondalık bölümü (456789) verilen sayıya kadar keser. Bu durumda 456789, 3 basamak sonra kesilir.
- Kalan sayılar (789) yuvarlanır.
Anahtar kelime parametreleri
1 2 3 4 5 | cikti="Merhaba {isim}, bakiyeniz {bakiye:9.3f}".format(isim="Ahmet",bakiye=1234.456789) print(cikti) |
1 2 3 4 | Merhaba Ahmet, bakiyeniz 1234.457 >>> |
Burada, sadece parametreler yerine, parametreler için bir anahtar / değer çifti kullandık. Yani isim = “Ahmet” ve bakiye= 1234.456789.
Bu parametrelere anahtarları tarafından {isim} ve {bakiye: 9.3f} olarak başvurulduğundan, bunlar anahtar kelime veya adlandırılmış bağımsız değişkenler olarak bilinirler.
Dahili olarak,
- Yer tutucusu {isim}, adın değeri – “Ahmet” ile değiştirilir. Başka herhangi bir biçim kodu içermediğinden “Ahmet” yerleştirilir.
- bakiye= 1234.456789 bağımsız değişkeni için {bakiye: 9.3f} yer tutucusu, 1234.457 değeriyle değiştirilir. Ancak, önceki örnekte olduğu gibi değiştirmeden önce, üzerinde 9.3f işlemi gerçekleştirir.
- Bu 1234.457 çıktı. Ondalık kısım 3 basamaktan sonra kesilir ve kalan basamaklar yuvarlanır. Aynı şekilde, solda iki boşluk bırakılarak toplam genişlik 9 atanır.
format() ile temel formatlama
format() methodu, biçimlendirme için basit yer tutucuların kullanılmasına izin verir.
Örnek 1: Varsayılan, konumsal ve anahtar kelime bağımsız değişkenleri için temel biçimlendirme
1 2 3 4 5 6 7 8 9 10 11 12 13 | # varsayılan argümanlar print("Merhaba {}, bakiyeniz {} ".format("Ahmet", 1234.456789)) # konumsal argümanlar print("Merhaba {0}, bakiyeniz {1} ".format("Ahmet", 1234.456789)) # anahtar argümanlar print("Merhaba {isim}, bakiyeniz {bakiye} ".format(isim="Ahmet", bakiye=1234.456789)) # karışık argümanlar print("Merhaba {0}, bakiyeniz {bakiye} ".format("Ahmet", bakiye=1234.456789)) |
Yukarıdaki kodun çıktısı aşağıdaki gibi olacaktır.
1 2 3 4 5 6 | Merhaba Ahmet, bakiyeniz 1234.456789 Merhaba Ahmet, bakiyeniz 1234.456789 Merhaba Ahmet, bakiyeniz 1234.456789 Merhaba Ahmet, bakiyeniz 1234.456789 |
format() ile sayıları biçimlendirme
Aşağıda verilen biçim belirleyicisini kullanarak sayıları biçimlendirebilirsiniz:
Tip | Anlamı |
---|---|
d | Decimal integer |
c | Karşılık gelen Unicode karakteri |
b | Binary format |
o | Octal format |
x | Hexadecimal format (küçük harf) |
X | Hexadecimal format (büyük harf) |
n | “D” ile aynı. Sayı ayırıcı için geçerli yerel ayarı kullanması dışında |
e | Exponential notation. (küçük karaktere) |
E | Exponential notation (büyük karakterE) |
f | Sabit nokta sayısını görüntüler (Varsayılan: 6) |
F | “F” ile aynı. “İnf” i “INF” olarak ve “nan” ı “NAN” olarak görüntüler |
g | Genel format. Sayıyı anlamlı basamağa yuvarlar. (Varsayılan hassasiyet: 6) |
G | “G” ile aynı. Sayı büyükse “E” ye geçiş . |
% | Yüzde. 100 ile çarpar ve sonuna% değerini koyar. |
Örnek 2: Basit sayı biçimlendirme
1 2 3 4 5 6 7 8 9 10 | # integer argümanlar print("Sayı :{:d}".format(123)) # float argümanlar print("Sayı :{:f}".format(123.456789999)) # octal, binary ve hexadecimal format print("bin: {0:b}, oct: {0:o}, hex: {0:x}".format(12)) |
Yukarıdaki kodun çıktısı şöyle olacaktır.
1 2 3 4 5 | Sayı :123 Sayı :123.456790 bin: 1100, oct: 14, hex: c |
Örnek 3: int ve floats için dolgulu sayı biçimlendirme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # minimum genişliğe sahip tam sayılar print("{:5d}".format(12)) # genişlik dolgudan daha uzun sayılar için çalışmaz print("{:2d}".format(1234)) # ondalık sayılar için dolgu print("{:8.3f}".format(12.2346)) # sıfırlarla dolu minimum genişliğe sahip tam sayılar print("{:05d}".format(12)) # sıfırlarla dolu ondalık sayılar için dolgu print("{:08.3f}".format(12.2346)) |
Ekran çıktısı
1 2 3 4 5 6 7 | 12 1234 12.235 00012 0012.235 |
Ne yaptık,
- ilk ifadede, {: 5d} bir tamsayı bağımsız değişkeni alır ve minimum 5 genişlik atar. Hizalama belirtilmediğinden sağa hizalanır.
- İkinci ifadede, genişliğin (2) sayıdan (1234) daha az olduğunu görebilirsiniz, bu nedenle sola herhangi bir boşluk kalmaz, aynı zamanda sayıyı da kesmez.
- Tam sayılardan farklı olarak, ondalıkların hem tam sayı hem de ondalık kısımları vardır. Ve sayıya tanımlanan minimum genişlik, “.” dahil bir bütün olarak her iki parça içindir.
- Üçüncü ifadede, {: 8.3f} ondalık bölümü son 2 rakamı yuvarlayarak 3 haneye böler. Ve şimdi 12.235 olan sayı, 2 sıra sola bırakarak bir bütün olarak 8 genişliğinde.
- Kalan yerleri sıfır ile doldurmak istiyorsanız, format belirticisi bunu yapmadan önce bir sıfır yerleştirin. Hem tam sayılar hem de kayan sayılar için çalışır: {: 05d} ve {: 08.3f}.
Örnek 4: İşaretli sayılar için sayı biçimlendirme
1 2 3 4 5 6 7 8 9 10 | # + işaretini göster print("{:+f} {:+f}".format(12.23, -12.23)) # sadece - işaretini göster print("{:-f} {:-f}".format(12.23, -12.23)) # + işareti için boluk göster print("{: f} {: f}".format(12.23, -12.23)) |
Kodlar yürütüldüğünde aşağıdaki çıktıyı elde ederiz.
1 2 3 4 5 | +12.230000 -12.230000 12.230000 -12.230000 12.230000 -12.230000 |
format() ile String Biçimlendirme
Sayı olarak dizge, format() ile benzer şekilde biçimlendirilebilir.
Örnek 6: Doldurma ve hizalamayla dize biçimlendirme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # sola hizalı dize dolgusu print("{:5}".format("ali")) # sağ hizalamalı dize dolgusu print("{:>5}".format("ali")) # merkez hizalamalı dize dolgu print("{:^5}".format("ali")) # merkez hizalamalı dize dolgu # ve '*' dolgu karakteri print("{:*^5}".format("ali")) |
Çıktı
1 2 3 4 5 6 | ali ali ali *ali* |
Örnek 7: format () ile dizeleri kesme
1 2 3 4 5 6 7 8 9 10 11 12 | # dizeleri 3 harfe kadar kısaltma print("{:.3}".format("kontrol kalemi")) # dizeleri 3 harfe kadar kısaltma # ve dolgu print("{:5.3}".format("kontrol kalemi")) # dizeleri 3 harfe kadar kısaltmak, # dolgu ve ortaya hizalama print("{:^5.3}".format("kontrol kalemi")) |
Çıktı
1 2 3 4 5 | kon kon kon |
format() kullanarak class ve dictionary üyelerini formatlama
Python dahili olarak “.kisi” biçimindeki sınıf üyeleri için getattr() kullanır ve “[dizin]” biçiminde dictionary üyeleri için __getitem __() aramasını kullanır.
Örnek 8: format() kullanarak sınıf üyelerini formatlama
1 2 3 4 5 6 7 8 9 | # Sınıf tanımlama class Kisi: yas = 33 isim = "Hakan" # biçimlendirme print("{kisi.isim}'nın yaşı {kisi.yas}".format(kisi=Kisi())) |
Çıktı:
1 2 3 4 | Hakan'nın yaşı 33 >>> |
Örnek 9: dictionary üyelerini format() kullanarak biçimlendirme
1 2 3 4 5 6 7 | # kisi adında dictionary(sözlük) tanımlama kisi = {'yas': 33, 'isim': 'Hakan'} # biçimlendirme print("{k[isim]}'ın yaşı {k[yas]}".format(k=kisi)) |
Çıktı:
1 2 3 4 | Hakan'ın yaşı 33 >>> |
Yorum Yap