Oblika Python String ()

Metoda string format () oblikuje dani niz v lepši izhod v Pythonu.

Sintaksa format()metode je:

 template.format (p0, p1,…, k0 = v0, k1 = v1,…)

Tu so p0, p1,… položajni argumenti in k0, k1,… argumenti ključnih besed z vrednostmi v0, v1,….

Predloga je mešanica kod kode z ogradami za argumente.

Format niza () Parametri

format()metoda zajema poljubno število parametrov. Ampak, je razdeljen na dve vrsti parametrov:

  • Pozicijski parametri - seznam parametrov, do katerih je mogoče dostopati z indeksom parametra znotraj zavitih oklepajev(index)
  • Parametri ključne besede - seznam parametrov tipa key = value, do katerih lahko dostopate s ključem parametra znotraj zavitih oklepajev(key)

Vrnjena vrednost iz oblike niza ()

format()Metoda vrne formatiran niz.

Kako deluje format String ()?

format()Prebere vrsto argumentov opravili z njim in ga oblikuje v skladu z oznakami v obliki zapisa niza.

Za položajne argumente

Pozicijski argumenti

Tu je argument 0 niz "Adam", argument 1 pa plavajoča številka 230.2346.

Opomba: Seznam argumentov se v Pythonu začne od 0.

Niz "Hello (0), your balance is (1:9.3f)"je niz predloge. Vsebuje kode za oblikovanje.

Zavite oklepaje so le ograde za argumente. V zgornjem primeru je (0) nadomestno mesto za "Adam" in (1: 9.3f) nadomestno mesto za 230.2346.

Ker se niz predloge na format()argumente sklicuje kot (0)in (1), so argumenti pozicijski argumenti. Na oba se je mogoče sklicevati tudi brez številk, saj jih ()Python interno pretvori v številke.

Interno,

  • Ker je "Adam" 0- ti argument, je namesto njega (0). Ker (0)ne vsebuje nobene druge kode oblike, ne izvaja nobenih drugih operacij.
  • Vendar pa to ne velja za 1 st argument 230.2346. Tu (1:9.3f)postavi 230.2346 na svoje mesto in izvede operacijo 9.3f.
  • f določa format, ki obravnava float številko. Če ni pravilno določeno, se prikaže napaka.
  • Del pred "." (9) določa najmanjšo širino / oblazinjenje števila (230.2346). V tem primeru je 230.2346 dodeljenih najmanj 9 mestom, vključno z "."
    Če ni podana nobena možnost poravnave, je poravnana desno od preostalih presledkov. (Pri nizih je poravnana levo.)
  • Del za "." (3) skrajša decimalni del (2346) na dano število. V tem primeru je 2346 okrnjeno po 3 mestih.
    Preostala števila (46) se zaokrožijo in izstopijo 235.

Za argumente ključnih besed

Argumenti ključnih besed

Isti primer od zgoraj smo uporabili za prikaz razlike med ključnimi besedami in pozicijskimi argumenti.

Tu smo namesto samo parametrov uporabili ključ-vrednost za parametre. Namreč ime = "Adam" in blc = 230.2346.

Ker se na te parametre ključi sklicujeta kot (ime) in (blc: 9.3f), so znani kot ključni besedi ali imenovani argumenti.

Interno,

  • Omejitev (ime) se nadomesti z vrednostjo imena - "Adam". Ker ne vsebuje nobene druge kode oblike, je postavljen "Adam".
  • Za argument blc = 230.2346 se nadomestni znak (blc: 9.3f) nadomesti z vrednostjo 230.2346. Toda preden ga zamenja, kot prejšnji primer, na njem izvede operacijo 9.3f.
    Tako dobite 230.235. Decimalni del se po 3 mestih skrajša, preostale številke pa se zaokrožijo. Prav tako je celotna širina dodeljena 9, tako da ostaneta dva presledka na levi.

Osnovno oblikovanje s formatom ()

format()Metoda omogoča uporabo preprostih ograde za oblikovanje.

Primer 1: Osnovno oblikovanje za privzete, pozicijske in ključne argumente

 # 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))

Izhod

Pozdravljeni, Adam, vaše stanje je 230,2346. Pozdravljeni, Adam, vaše stanje je 230,2346. Pozdravljeni, Adam, vaše stanje je 230,2346. Pozdravljeni, Adam, vaše stanje je 230,2346.

Opomba: V primeru mešanih argumentov morajo argumenti ključnih besed vedno slediti pozicijskim argumentom.

Oblikovanje števil s formatom ()

Številke lahko formatirate z uporabo spodaj določevalnika oblike:

Vrste oblikovanja števil
Tip Pomen
d Decimalno celo število
c Ustrezni znak Unicode
b Binarni format
o Oktalna oblika
x Šestnajstiška oblika (mala črka)
X Šestnajstiška oblika (velika črka)
n Enako kot "d". Razen, da za ločilo števil uporablja trenutno nastavitev področne nastavitve
e Eksponentni zapis. (mala črka e)
E Exponential notation (uppercase E)
f Displays fixed point number (Default: 6)
F Same as 'f'. Except displays 'inf' as 'INF' and 'nan' as 'NAN'
g General format. Rounds number to p significant digits. (Default precision: 6)
G Same as 'g'. Except switches to 'E' if the number is large.
% Percentage. Multiples by 100 and puts % at the end.

Example 2: Simple number formatting

 # 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))

Output

 The number is: 123 The number is:123.456790 bin: 1100, oct: 14, hex: c

Example 3: Number formatting with padding for int and floats

 # 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))

Output

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

Here,

  • in the first statement, (:5d) takes an integer argument and assigns a minimum width of 5. Since, no alignment is specified, it is aligned to the right.
  • 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

Oblikovanje števil s poravnavo

Operatorji and =se uporabljajo za poravnavo, kadar je številkam dodeljena določena širina.

Oblikovanje števil s poravnavo
Tip Pomen
< Levo poravnano s preostalim prostorom
^ Središče poravnano s preostalim prostorom
> Desno poravnano s preostalim prostorom
= Potisne podpisani (+) (-) v skrajni levi položaj

Primer 5: Oblikovanje števil s poravnavo levo, desno in sredino

 # 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))

Izhod

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

Opomba: Leva poravnava, napolnjena z ničlami ​​za celoštevilska števila, lahko povzroči težave kot tretji primer, ki vrne 12000 in ne 12.

Oblikovanje nizov v obliki zapisa ()

Kot številke lahko niz oblikujemo na podoben način z 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)

Uporabite lahko tudi predmete __str__()in __repr__()funkcije s kratkimi zapisi format().

Tako __format__()lahko enostavno preglasite predmete __str__()in __repr_()metode.

Primer 12: __str () __ in __repr () __ okrajšava! R in! S z uporabo formata ()

 # __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()))

Izhod

 Citati: 'mačka', Brez narekovajev: mačka repr: REPR, str: STR 

Zanimive Članki...