4.2. Merkkijonojen muodostaminen metodilla str.format
Pythonissa on tarjolla sangen monipuolinen merkkijonojen muotoilumetodi str.format. Tarjolla olevia muotoilumäärityksiä kuvataan tarkemmin The Python Standard Libraryn luvussa 6.1.3. Format String Syntax, johon kannattaa tutustua. Käydään tässä läpi muutamia keskeisiä rakenteita.
Annetut parametrit voi suoraviivaisesti lisätä oikeisiin kohtiin merkkijonossa käyttäen merkintää {}
.
>>> s='Arvot ovat {}, {} ja {}'.format('a', 1, True)
>>> s
'Arvot ovat a, 1 ja True'
>>>
Tämä ei kuitenkaan ole näppärää, jos haluamme toistaa saman parametrin moneen kertaan. Lisäämällä numeron aaltosulkujen väliin, voimme käyttää samoja parametreja useita kertoja ja mielivaltaisessa järjestyksessä. Esim.
>>> def info_box(mother, father, hline, nl):
... print('{2}{3}Mother: {0}{3}{2}{3}Father: {1}{3}{2}'.format(mother, father, hline, nl))
...
>>>
>>> info_box('Virpi Varpunen', 'Keijo Kotka', 22 * '-', '\n')
----------------------
Mother: Virpi Varpunen
----------------------
Father: Keijo Kotka
----------------------
>>> info_box('Teea Tilhi', 'Pertti Pääskynen', '', '\n')
Mother: Teea Tilhi
Father: Pertti Pääskynen
>>>
info_box
parametrin hline
.
Käytämme tätä parametria kolme kertaa.info_box
parametria nl
käytämme rivierotimena. Annamme tämän formatille kolmantena parametrina ja käytämme sitä formatin
merkkijonossa peräti neljä kertaa.Numeroitujen parametrien käyttö on kuitenkin hieman hankalaa, koska koko ajan pitää laskeskella, missä indeksissä mikäkin parametri oli. Helpompaa voi olla käyttää nimettyjä parametreja:
>>> print('People claim that {firstname} {lastname} answers to all email sent to {email}'
... .format(firstname='Noam', lastname='Chomsky', email='chomsky@mit.edu'))
People claim that Noam Chomsky answers to all email sent to chomsky@mit.edu
>>>
>>> # Tai käyttäen dict-oliota
>>> chomsky={'firstname': 'Noam', 'lastname': 'Chomsky', 'email': 'chomsky@mit.edu'}
>>> print('People claim that {firstname} {lastname} answers to all email sent to {email}'.format(**chomsky))
People claim that Noam Chomsky answers to all email sent to chomsky@mit.edu
>>>
chomsky
vastaavista kentistä, koska ** -notaatio laventaa sanakirjan kentät funktionkutsussa
nimetyiksi parametreiksi.
format
-metodille annetun parametrin.