Python Dize biçimi ()

String format () yöntemi, verilen dizeyi Python'da daha güzel bir çıktıya biçimlendirir.

format()Yöntemin sözdizimi şöyledir:

 şablon.formatı (p0, p1,…, k0 = v0, k1 = v1,…)

Burada, p0, p1,… konumsal bağımsız değişkenlerdir ve k0, k1,… sırasıyla v0, v1,… değerlerine sahip anahtar sözcük bağımsız değişkenleridir.

Ve şablon, bağımsız değişkenler için yer tutucularla birlikte biçim kodlarının bir karışımıdır.

Dize biçimi () Parametreler

format()yöntem herhangi bir sayıda parametre alır. Ancak, iki tür parametreye ayrılmıştır:

  • Konumsal parametreler - küme ayraçları içindeki parametre dizini ile erişilebilen parametrelerin listesi(index)
  • Anahtar kelime parametreleri - küme parantezleri içindeki parametre anahtarıyla erişilebilen anahtar = değer türündeki parametrelerin listesi(key)

Dize biçiminden dönüş değeri ()

format()Yöntem biçimlendirilmiş dize döndürür.

String format () nasıl çalışır?

, Kendisine format()aktarılan argümanların türünü okur ve dizede tanımlanan biçim kodlarına göre biçimlendirir.

Konumsal argümanlar için

Konumsal argümanlar

Burada, Bağımsız Değişken 0 bir "Adam" dizesidir ve Bağımsız Değişken 1, 230.2346 numaralı bir kayan sayıdır.

Not: Argüman listesi Python'da 0'dan başlar.

Dize "Hello (0), your balance is (1:9.3f)", şablon dizesidir. Bu, biçimlendirme için biçim kodlarını içerir.

Küme parantezleri, yalnızca argümanların yerleştirileceği yer tutuculardır. Yukarıdaki örnekte, (0) "Adam" için yer tutucudur ve (1: 9.3f), 230.2346 için yer tutucudur.

Şablon dizesi format()argümanlara (0)ve olarak başvurduğundan (1), argümanlar konumsal argümanlardır. Her ikisine de sayılar olmadan başvurulabilir ()ve Python bunları dahili olarak sayılara dönüştürür.

Dahili olarak,

  • "Adam" 0'ıncı argüman olduğu için yerine yerleştirilir (0). Yana (0)başka bir biçim kodlarını içermez, diğer herhangi işlemleri gerçekleştirmez.
  • Ancak, 1 için durum böyle değildir st argüman 230,2346. Burada (1:9.3f)230.2346'yı yerine yerleştirir ve 9.3f işlemini gerçekleştirir.
  • f, biçimin bir kayan sayı ile ilgilendiğini belirtir. Doğru şekilde belirtilmezse, bir hata verecektir.
  • "." (9), sayının (230.2346) alabileceği minimum genişliği / dolguyu belirtir. Bu durumda, 230.2346'ya "." 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ü (2346) verilen sayıya kadar keser. Bu durumda, 2346 3 basamak sonra kesilir.
    Kalan sayılar (46) 235 ile yuvarlanır.

Anahtar kelime argümanları için

Anahtar kelime argümanları

Anahtar kelime ve konumsal argümanlar arasındaki farkı göstermek için yukarıdaki aynı örneği kullandık.

Burada, sadece parametreler yerine, parametreler için bir anahtar / değer çifti kullandık. Yani isim = "Adam" ve blc = 230.2346.

Bu parametrelere anahtarları tarafından (ad) ve (blc: 9.3f) olarak başvurulduğundan, bunlar anahtar kelime veya adlandırılmış bağımsız değişkenler olarak bilinir.

Dahili olarak,

  • Yer tutucu (ad), adın değeri - "Adam" ile değiştirilir. Başka herhangi bir format kodu içermediğinden "Adam" yerleştirilir.
  • Blc = 230.2346 bağımsız değişkeni için yer tutucu (blc: 9.3f), 230.2346 değeriyle değiştirilir. Ancak, önceki örnekte olduğu gibi değiştirmeden önce, üzerinde 9.3f işlemi gerçekleştirir.
    Bu 230.235 çı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()Yöntem biçimlendirme için basit tutucuların kullanımına izin verir.

Örnek 1: Varsayılan, konumsal ve anahtar kelime bağımsız değişkenleri için temel biçimlendirme

 # default arguments print("Hello (), your balance is ().".format("Adam", 230.2346)) # positional arguments print("Hello (0), your balance is (1).".format("Adam", 230.2346)) # keyword arguments print("Hello (name), your balance is (blc).".format(name="Adam", blc=230.2346)) # mixed arguments print("Hello (0), your balance is (blc).".format("Adam", blc=230.2346))

Çıktı

Merhaba Adam, bakiyeniz 230.2346. Merhaba Adam, bakiyeniz 230.2346. Merhaba Adam, bakiyeniz 230.2346. Merhaba Adam, bakiyeniz 230.2346.

Not: Karışık argümanlar olması durumunda, anahtar kelime argümanları her zaman konumsal argümanları takip etmelidir.

Format () ile formatlama sayıları

Aşağıda verilen biçim belirleyicisini kullanarak sayıları biçimlendirebilirsiniz:

Sayı Biçimlendirme Türleri
Tür Anlam
d Ondalık tam sayı
c Karşılık gelen Unicode karakteri
b İkili biçim
Ö Sekizli biçim
x Onaltılık format (küçük harf)
X Onaltılık format (büyük harf)
n "D" ile aynı. Sayı ayırıcı için mevcut yerel ayarı kullanması dışında
e Üstel gösterim. (küçük e harfi)
E Üstel gösterim (büyük E)
f Sabit nokta numarasını görüntüler (Varsayılan: 6)
F "F" ile aynı. "İnf" i "INF" ve "nan" i "NAN" olarak görüntüler hariç
g Genel format. Sayıyı p anlamlı basamağa yuvarlar. (Varsayılan hassasiyet: 6)
G "G" ile aynı. Sayı büyükse 'E'ye geçiş dışında.
% Yüzde. 100 ile çarpar ve sonuna% değerini koyar.

Örnek 2: Basit sayı biçimlendirme

 # integer arguments print("The number is:(:d)".format(123)) # float arguments print("The float number is:(:f)".format(123.4567898)) # octal, binary and hexadecimal format print("bin: (0:b), oct: (0:o), hex: (0:x)".format(12))

Çıktı

 Sayı: 123 Sayı: 123.456790 bin: 1100, ekim: 14, onaltılık: c

Örnek 3: int ve floats için dolgulu sayı biçimlendirme

 # integer numbers with minimum width print("(:5d)".format(12)) # width doesn't work for numbers longer than padding print("(:2d)".format(1234)) # padding for float numbers print("(:8.3f)".format(12.2346)) # integer numbers with minimum width filled with zeros print("(:05d)".format(12)) # padding for float numbers filled with zeros print("(:08.3f)".format(12.2346))

Çıktı

1 2 1 2 3 4 1 2. 2 3 5 0 0 0 1 2 0 0 1 2. 2 3 5

Buraya,

  • ilk ifadede, (:5d)bir tamsayı bağımsız değişkeni alır ve minimum 5 genişliği atar. Hizalama belirtilmediğinden, sağa hizalanır.
  • In the second statement, you can see the width (2) is less than the number (1234), so it doesn't take any space to the left but also doesn't truncate the number.
  • Unlike integers, floats has both integer and decimal parts. And, the mininum width defined to the number is for both parts as a whole including ".".
  • In the third statement, (:8.3f) truncates the decimal part into 3 places rounding off the last 2 digits. And, the number, now 12.235, takes a width of 8 as a whole leaving 2 places to the left.
  • If you want to fill the remaining places with zero, placing a zero before the format specifier does this. It works both for integers and floats: (:05d) and (:08.3f).

Example 4: Number formatting for signed numbers

 # show the + sign print("(:+f) (:+f)".format(12.23, -12.23)) # show the - sign only print("(:-f) (:-f)".format(12.23, -12.23)) # show space for + sign print("(: f) (: f)".format(12.23, -12.23))

Output

+12.230000 -12.230000 12.230000 -12.230000 1 2. 2 3 0 0 0 0 - 1 2. 2 3 0 0 0 0

Hizalamayla sayı biçimlendirme

Operatörler and =, numaralara belirli bir genişlik atandığında hizalama için kullanılır.

Hizalamayla sayı biçimlendirme
Tür Anlam
< Kalan boşluğa sola hizalanmış
^ Kalan boşluğa ortalanmış
> Kalan boşluğa sağa hizalı
= İşaretli (+) (-) işareti en soldaki konuma zorlar

Örnek 5: Sola, sağa ve ortaya hizalamayla sayı biçimlendirme

 # integer numbers with right alignment print("(:5d)".format(12)) # float numbers with center alignment print("(:^10.3f)".format(12.2346)) # integer left alignment filled with zeros print("(:<05d)".format(12)) # float numbers with center alignment print("(:=8.3f)".format(-12.2346))

Çıktı

1 2 1 2. 2 3 5 1 2 0 0 0 - 1 2. 2 3 5

Not: Tamsayılar için sıfırlarla doldurulmuş sola hizalama, 3. örnek olarak 12 yerine 12000 döndüren sorunlara neden olabilir.

Format () ile dize formatlaması

Sayı olarak, dizge ile benzer şekilde biçimlendirilebilir format().

Example 6: String formatting with padding and alignment

 # string padding with left alignment print("(:5)".format("cat")) # string padding with right alignment print("(:>5)".format("cat")) # string padding with center alignment print("(:^5)".format("cat")) # string padding with center alignment # and '*' padding character print("(:*^5)".format("cat"))

Output

 c a t c a t c a t * c a t * 

Example 7: Truncating strings with format()

 # truncating strings to 3 letters print("(:.3)".format("caterpillar")) # truncating strings to 3 letters # and padding print("(:5.3)".format("caterpillar")) # truncating strings to 3 letters, # padding and center alignment print("(:^5.3)".format("caterpillar"))

Output

 c a t c a t c a t 

Formatting class and dictionary members using format()

Python internally uses getattr() for class members in the form ".age". And, it uses __getitem__() lookup for dictionary members in the form "(index)".

Example 8: Formatting class members using format()

 # define Person class class Person: age = 23 name = "Adam" # format age print("(p.name)'s age is: (p.age)".format(p=Person()))

Output

 Adam's age is: 23 

Here, Person object is passed as a keyword argument p.

Inside the template string, Person's name and age are accessed using .name and .age respectively.

Example 9: Formatting dictionary members using format()

 # define Person dictionary person = ('age': 23, 'name': 'Adam') # format age print("(p(name))'s age is: (p(age))".format(p=person))

Output

 Adam's age is: 23 

Similar to class, person dictionary is passed as a keyword argument p.

Inside the template string, person's name and age are accessed using (name) and (age) respectively.

There's an easier way to format dictionaries in Python using str.format(**mapping).

 # define Person dictionary person = ('age': 23, 'name': 'Adam') # format age print("(name)'s age is: (age)".format(**person))

** is a format parameter (minimum field width).

Arguments as format codes using format()

You can also pass format codes like precision, alignment, fill character as positional or keyword arguments dynamically.

Example 10: Dynamic formatting using format()

 # dynamic string format template string = "(:(fill)(align)(width))" # passing format codes as arguments print(string.format('cat', fill='*', # dynamic float format template num = "(:(align)(width).(precision)f)" # passing format codes as arguments print(num.format(123.236,>

Output

 * * c a t * * 1 2 3 . 2 4 

Here,

  • In the first example, 'cat' is the positional argument is to be formatted. Likewise, fill='*', align='^' and width=5 are keyword arguments.
  • In the template string, these keyword arguments are not retrieved as normal strings to be printed but as the actual format codes fill, align and width.
    The arguments replaces the corresponding named placeholders and the string 'cat' is formatted accordingly.
  • Likewise, in the second example, 123.236 is the positional argument and, align, width and precision are passed to the template string as format codes.

Extra formatting options with format()

format() also supports type-specific formatting options like datetime's and complex number formatting.

format() internally calls __format__() for datetime, while format() accesses the attributes of the complex number.

You can easily override the __format__() method of any object for custom formatting.

Example 11: Type-specific formatting with format() and overriding __format__() method

 import datetime # datetime formatting date = datetime.datetime.now() print("It's now: (:%Y/%m/%d %H:%M:%S)".format(date)) # complex number formatting complexNumber = 1+2j print("Real part: (0.real) and Imaginary part: (0.imag)".format(complexNumber)) # custom __format__() method class Person: def __format__(self, format): if(format == 'age'): return '23' return 'None' print("Adam's age is: (:age)".format(Person()))

Output

 It's now: 2016/12/02 04:16:28 Real part: 1.0 and Imaginary part: 2.0 Adam's age is: 23 

Here,

  • For datetime:
    Current datetime is passed as a positional argument to the format() method.
    And, internally using __format__() method, format() accesses the year, month, day, hour, minutes and seconds.
  • For complex numbers:
    1+2j is internally converted to a ComplexNumber object.
    Then accessing its attributes real and imag, the number is formatted.
  • Overriding __format__():
    Like datetime, you can override your own __format__() method for custom formatting which returns age when accessed as (:age)

Ayrıca, kullanarak steno notasyonlarla nesne __str__()ve __repr__()işlevselliği kullanabilirsiniz format().

Gibi __format__(), nesne __str__()ve __repr_()yöntemleri kolayca geçersiz kılabilirsiniz .

Örnek 12: __str () __ ve __repr () __ steno! R ve! S format () kullanarak

 # __str__() and __repr__() shorthand !r and !s print("Quotes: (0!r), Without Quotes: (0!s)".format("cat")) # __str__() and __repr__() implementation for class class Person: def __str__(self): return "STR" def __repr__(self): return "REPR" print("repr: (p!r), str: (p!s)".format(p=Person()))

Çıktı

 Alıntılar: 'kedi', Alıntılar Olmadan: kedi repr: REPR, str: STR 

Ilginç makaleler...