Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Funkce format a její možnosti

Aktivity
Avatar
hanpari
Tvůrce
Avatar
hanpari:17.6.2014 19:41

Svého času jsem narazil na takový zajímavý problém.

Když uvažuji tento kód:

>>> s = "{0:*>15}".format("text")
>>> s #získám tento výstup
'***********text'

Jak je vidět, celý text je zarovnaný hvězdičkami zprava.Jeho užitečnost si můžeme demonstrovat tady:

>>> s = "{0:*>15}".format("Delší text")
>>> s # Dostaneme opět hezké zarovnání na 15 znaků.
'*****Delší text'

Jenomže, co když budu chtít odsazení měnit za chodu programu?

Tenhle kód nefunguje.

>>> odsazeni=25
>>> s = "{0:*>odsazeni}".format("text")
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    s = "{0:*>odsazeni}".format("text")
ValueError: Invalid format specifier

Jediné, co mne napadlo, je použít funkce eval, popřípadě exec, ale věřím, že musí být nějaké elegantnější řešení.

Napadá někoho něco?

 
Odpovědět
17.6.2014 19:41
Avatar
coells
Tvůrce
Avatar
Odpovídá na hanpari
coells:17.6.2014 19:46
"{0:*>{odsazeni}}".format("text",odsazeni=25)
 
Nahoru Odpovědět
17.6.2014 19:46
Avatar
coells
Tvůrce
Avatar
Odpovídá na hanpari
coells:17.6.2014 19:47

nebo oblíbené

"{:*>{}}".format("text",25)
 
Nahoru Odpovědět
17.6.2014 19:47
Avatar
hanpari
Tvůrce
Avatar
Odpovídá na coells
hanpari:17.6.2014 19:52

Díky ti, dobrá vílo. Tohle je opravdu užitečné. Nevím, jak to děláš, že si to tak dobře pamatuješ. Já jsem to hledal v dokumentaci (asi špatně) a zrovna tenhle konkrétní problém mi přišlo, že tam nebyl řešený. Ten druhý příklad se mi líbí víc - ale když o tom tak uvažuji, ten první bude asi přehlednější pro delší zápisy.

 
Nahoru Odpovědět
17.6.2014 19:52
Avatar
coells
Tvůrce
Avatar
Odpovídá na hanpari
coells:17.6.2014 19:54

Mně se líbí víc ten druhý, protože vypadá jako smajlík.

 
Nahoru Odpovědět
17.6.2014 19:54
Avatar
hanpari
Tvůrce
Avatar
Odpovídá na coells
hanpari:17.6.2014 19:55

Tak to je aspoň důvod :)

 
Nahoru Odpovědět
17.6.2014 19:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.