Hello Format!
Di mech06
Pubblicato Lunedì 13 Aprile 2020 16:41
Il primo articolo di un neonato blog di programmazione che si rispetti non poteva non partire da una delle più utilizzate stringhe di test del mondo, qui rimaneggiata per l'occasione per introdurre l'argomento del quale andremo a parlare, la funzione format di python.
hello_string = "{} {}!"
hello_string.format( "Hello", "format")
Data una stringa sulla quale andiamo ad invocare format, dovremo passargli tanti parametri quanti sono i segnaposti formati dalle parentesi {} presenti nella stringa. La posizione con cui elenchiamo i parametri è rilevante perché questi saranno sostituiti con lo stesso ordine in cui sono scritti, nel nostro caso avremo che:
- Hello sarà sostituito alla prima {}
- Format sarà sostituito alla seconda {}
Se ne mettessimo anche solo uno di meno python non saprebbe come effettuare la sostituzione lanciando un Index error.
hello_string = "{} {}!"
hello_string.format( “Hello” )
Se invece abbondiamo non avremo errori ma saranno sostituiti solo i primi N placeholders:
"{} {}".format( "uno", "due", "tre" )
Un pò più evoluto del comportamento base ( che è comunque utile nella maggioranza dei casi ) è quello in cui si va ad esplicitare nel placeholder come effettuare la sostituzione. Partendo dall’assunto che i parametri dati a format si numerano da 0, possiamo scrivere:
"{0} {1} {2} {3}".format( "Cuori", "Quadri", "Fiori", "Picche" ) # Cuori Quadri Fiori Picche
"{3} {2} {1} {0}".format( "Cuori", "Quadri", "Fiori", "Picche" ) # Picche Fiori Quadri Cuori
Od ancora, possiamo ripetere i termini che vogliamo nella posizione che vogliamo:
"{3} {2} {1} {0} {2}".format( "Cuori", "Quadri", "Fiori", "Picche" ) # Picche Fiori Quadri Cuori Fiori
Infine possiamo utilizzare la sostituzione per chiave:
"Io mi chiamo {nome} {cognome}".format( nome='Mario', cognome='Rossi' )
Basta in questo caso mettere all’interno del placeholder il nome della chiave che andremo poi a richiamare nell’invocazione di format.
Anche in questo caso se una chiave non viene fornita incorriamo in un Key Error perchè python non saprà come effettuare la sostituzione:
"Io mi chiamo {nome} {cognome}".format( nome='Mario' )
Ma se aggiungiamo più chiavi di quelle effettivamente presenti nella stringa python sostituirà solo quelle necessarie:
"Io mi chiamo {nome}".format( nome='Mario', cognome='Rossi' )
Anche in questo caso possiamo replicare a piacimento placeholders con la stessa chiave per creare delle ripetizioni nella stringa:
"Io mi chiamo {nome}. {nome} è un nome molto comune.".format( nome = 'Mario' )
Facile no? Alla prossima puntata!!! :)