Cursus
Stringformattering staat ook bekend als stringinterpolatie. Het is het proces waarbij je een aangepaste string of variabele invoegt in vooraf gedefinieerde tekst.
custom_string = "String formatting"
print(f"{custom_string} is a powerful technique")
String formatting is a powerful technique
Als data scientist gebruik je dit om bijvoorbeeld een titel in een grafiek te zetten, een bericht of foutmelding te tonen, of een statement aan een functie door te geven.
Methoden voor formatteren
- Positionele formatting
- Geformatteerde string-literals
- Template-methode
String.Format-methode
We plaatsen placeholders, gedefinieerd door een paar accolades, in een tekst. We roepen de dot-format-methode van de string aan. Daarna geven we de gewenste waarde door aan de methode. De methode vervangt de placeholders in volgorde van voorkomen door de waarden:
'text{}'.format(value)
Positionele formatting
We definiëren een string en voegen twee placeholders in. We geven twee strings door aan de methode, die worden doorgegeven om de volgende output te krijgen:
print("Machine learning provides {} the ability to learn {}".format("systems", "automatically"))
Machine learning provides systems the ability to learn automatically
We kunnen variabelen gebruiken voor zowel de string als de waarden die aan de methode worden doorgegeven. In de onderstaande voorbeeldcode definiëren we een string met placeholders en twee andere variabelen. We passen de format-methode toe op de string met de twee gedefinieerde variabelen. De methode leest de string en vervangt de placeholders door de opgegeven waarden.
my_string = "{} rely on {} datasets"
method = "Supervised algorithms"
condition = "labeled"
print(my_string.format(method, condition))
Supervised algorithms rely on labeled datasets
Waarden herordenen
In het onderstaande voorbeeld voeg je indexnummers toe in de placeholders om waarden te herordenen. Dit beïnvloedt de volgorde waarin de methode de placeholders vervangt.
De methode vervangt ze met de waarden in de opgegeven volgorde.
print("{} has a friend called {} and a sister called {}". format("Betty", "Linda", "Daisy"))
Betty has a friend called Linda and a sister called Daisy
Als we de indexnummers toevoegen, verandert de vervangingsvolgorde dienovereenkomstig.
print("{2} has a friend called {0} and a sister called {1}". format("Betty", "Linda", "Daisy"))
Daisy has a friend called Betty and a sister called Linda
Naamplaceholders
We kunnen ook keyword-argumenten gebruiken die worden aangeroepen met hun keywordnaam.
In de onderstaande voorbeeldcode hebben we keywords in de placeholders geplaatst. Vervolgens roepen we deze keywords aan in de format-methode. Daarna wijzen we toe welke variabele voor elk van hen wordt doorgegeven, wat resulteert in de volgende output.
tool="Unsupervised algorithms"
goal="patterns"
print("{title} try to find {aim} in the dataset".format(title=tool, aim=goal))
Unsupervised algorithms try to find patterns in the dataset
Laten we de onderstaande code bekijken. We hebben een dictionary gedefinieerd met keys: tool en goal.
my_methods = {"tool": "Unsupervised algorithms", "goal": "patterns"}
We willen hun waarden in een string invoegen. In de placeholders kunnen we met bracketnotatie de waarde specificeren die hoort bij de key tool van de variabele data. Data is de dictionary die in de methode is gespecificeerd, en tool is de key die in die dictionary aanwezig is.
print('{data[tool]} try to find {data[goal]} in the dataset'.format(data=my_methods))
Zo krijgen we de gewenste output hieronder te zien. Let op! Je moet de index opgeven zonder aanhalingstekens.
Unsupervised algorithms try to find patterns in the dataset
Formatspecificator
We kunnen ook de formatspecificatie tussen accolades opgeven. Dit bepaalt hoe individuele waarden worden weergegeven. Hier gebruiken we de syntaxis index dubbelepunt specificator. Een van de meest voorkomende formatspecificators is float, weergegeven door f. In de code geven we aan dat de waarde die wordt doorgegeven met index 0 een float is.
print("Only {0:f}% of the {1} produced worldwide is {2}!". format(0.5155675, "data", "analyzed"))
Only 0.515567% of the data produced worldwide is analyzed!
We kunnen ook .2f toevoegen om aan te geven dat we willen dat de float twee decimalen heeft, zoals te zien is in de resulterende output.
print("Only {0:.2f}% of the {1} produced worldwide is {2}!".format(0.5155675, "data", "analyzed"))
Only 0.52% of the data produced worldwide is analyzed!
Formatteren van datetime
Python heeft een module genaamd datetime waarmee we bijvoorbeeld de datum en tijd van vandaag kunnen opvragen.
from datetime import datetime
print(datetime.now())
2020-08-08 06:28:42.715243
Maar omdat het geretourneerde formaat nogal specifiek is, kun je een formatspecificatie zoals %y-%m-%d-%h-%m gebruiken om het formaat aan te passen naar iets dat ons vertrouwder is!
print("Today's date is {:%Y-%m-%d %H:%M}".format(datetime.now()))
Today's date is 2020-08-08 06:29
Interactief voorbeeld
In het volgende voorbeeld ken je de substrings van het 4e tot het 19e teken, en van het 22e tot het 44e teken van wikipedia_article toe aan de variabelen first_pos en second_pos. Pas de strings aan zodat ze lowercase zijn. Print ten slotte de variabelen first_pos en second_pos.
# Assign the substrings to the variables
first_pos = wikipedia_article[3:19].lower()
second_pos = wikipedia_article[21:44].lower()
Wanneer we de bovenstaande code uitvoeren, levert dit het volgende resultaat op:
computer science
artificial intelligence
Wil je meer leren over positionele formatting? Bekijk dan deze video uit onze cursus Regular Expressions in Python.
Deze content is afkomstig uit DataCamp’s cursus Regular Expressions in Python van Maria Eugenia Inzaugarat.
Bekijk ook onze Python String Tutorial.
