Met f-strings kun je op gemakkelijke wijze een string voorzien van waarden uit variabelen. Denk hiervoor bijvoorbeeld aan een boodschap die je tijdens het uitvoeren van je code print, met hierin de waarden van enkele variabelen. Daarbij kun je instellen hoe de variabelen getoond gaan worden. Bijvoorbeeld het aantal decimalen van een kommagetal.
In dit blog behandelen we de volgende onderwerpen:
- F-string syntax
- Waarom zou je F-strings gebruiken?
- Getallen & f-strings
- Percentages in f-strings
- Datums in f-strings
- Padding en uitlijning binnen f-strings
- Multi-lines f-strings
1. F-string syntax
De ”f” in f-string staat voor format/formatting: opmaken.
We bekijken het volgende voorbeeld:
length = 1.7542
message = f"The length is: {length} meters."
print(message)
The length is: 1.7542 meters.
Hierin doen we het volgende:
- Maken variabele “length” aan: een float met een bepaalde lengte.
- Maken variabele “message” aan: met een f-string geven we een boodschap op, en gebruiken we de waarde van variabele “length”.
- Met de print() functie printen we de waarde van variabele “message”.
We zien hier dat de syntax van een f-string als volgt is:
variable = f"<>{other_varible}<>"
- Je start met een f.
- Met enkelvoudige of dubbele quotes geef je een string op.
- Daar waar de waarde van een variabele moet komen zet je deze tussen accolades: {<variabele>}.
Je kunt daarbij zoveel variabelen in de f-string toevoegen als nodig is. Zie onderstaand voorbeeld met 3 variabelen in de f-string:
first_name = "John"
last_name = "Doe"
length = 1.7542
message = f"The length of {first_name} {last_name} is: {length} meters."
print(message)
The length of John Doe is: 1.7542 meters.
2. Waarom zou je F-strings gebruiken?
Je gebruikt een f-string om een string op te maken met waarden van variabelen. De f-string functionaliteit is beschikbaar sinds Python versie 3.6 (zie ook Python 2 vs Python 3). Hiervoor kon je voor hetzelfde doel gebruik maken van bijvoorbeeld de .format() methode en het % teken.
Het gebruik van de f-string is fijner dan deze andere opties. Het is beter leesbaar en het is sneller.
3. Getallen gebruiken in f-strings
We hebben al gezien dat we met een f-string een getal in een string kunnen voegen. Zie nogmaals onderstaand voorbeeld om een boodschap met een lengte te verkrijgen:
length = 1.7562
message = f"The length is: {length} meters."
print(message)
The length is: 1.7562 meters.
Nu kan het zo zijn dat je het aantal decimalen wilt limiteren. Dit kan gemakkelijk.
Hiervoor voegen we achter de naam van de variabele het volgende toe: :.<aantal decimalen>f
Zie onderstaand voorbeeld waarbij 2 decimalen getoond worden:
length = 1.7562
message = f"The length is: {length:.2f} meters."
print(message)
The length is: 1.76 meters.
Een bijkomend voordeel is dat er ook direct afgerond wordt.
Bij grote getallen kun je voor leesbaarheid een duizendscheidingsteken toevoegen. Dit is te zien in het volgende voorbeeld:
weight = 785634.3682
message = f"It weights: {weight:,.2f} grams."
print(message)
It weights: 785,634.37 grams.
Hierbij zet je het duizendscheidingsteken na de dubbele punt.
4. Percentages in f-strings
Een specifiek voorbeeld van een getal is een percentage. Hier kan een f-string ook goed mee overweg. Dit doe je op dezelfde wijze als bij getallen, alleen nu gebruik je een %-teken in plaats van de f. Zie onderstaand voorbeeld:
fraction = .5894
message = f"The fraction is: {fraction:.0%}."
print(message)
The fraction is: 59%.
In deze code doen we het volgende:
- Maken variabele “fraction” aan.
- Maken variabele “message” aan: met een f-string geven we een boodschap op, en gebruiken we de waarde van variabele “fraction”. Hier gebruiken we het %-teken voor een percentage. En met .0 specificeren we dat geen decimalen getoond zullen worden.
- We printen de boodschap.
5. Datums in f-strings
Net als getallen kunnen we ook datums toevoegen aan een string met een f-string. Zie onderstaand voorbeeld. Hierin gebruiken we package datetime om de huidige datum en tijd te verkrijgen. We gebruiken formatting-opties om e.e.a. overzichtelijk terug te laten komen.
from datetime import datetime
now = datetime.now()
message = f"Today it is: {now:%A %d %B %Y, %H:%M}."
print(message)
Today it is: Sunday 16 October 2022, 16:05.
6. Padding en uitlijning binnen f-strings
Wanneer je herhaaldelijk vergelijkbare boodschappen maakt, kan het handig zijn om gebruik te maken van padding en/of uitlijning.
Dit zie je aan de hand van onderstaand voorbeeld:
lengths = [1.456, 1.2, 1.45663, 1.54546, 1.5]
for length in lengths:
message = f"The length is: {length} meters."
print(message)
The length is: 1.456 meters. The length is: 1.2 meters. The length is: 1.45663 meters. The length is: 1.54546 meters. The length is: 1.5 meters.
Hierbij printen we met een for-loop een boodschap voor elk van de gewichten uit de list. Daarbij zie je dat afhankelijk van het aantal cijfers de lengte van de boodschap varieert. Soms is dit niet wenselijk. Bijvoorbeeld als hier hierdoor minder goed leesbaar wordt zoals in onderstaand voorbeeld.
weights = [125, 5, 7564, 78, 12]
for weight in weights:
message = f"It weights: {weight} kilograms."
print(message)
It weights: 125 kilograms. It weights: 5 kilograms. It weights: 7564 kilograms. It weights: 78 kilograms. It weights: 12 kilograms.
Je kunt hiervoor gebruik maken van zero-padding. Daarbij voeg je voor ieder getal een bepaald aantal nullen toe. Dit zodanig dat de totale lengte inclusief de nullen overal gelijk is. Zie onderstaand voorbeeld. De 5 geeft hierin aan dat de totale lengte gelijk is aan 5 tekens. Je kunt de 0 ook weglaten, dan wordt er lege ruimte gebruikt:
weights = [125, 5, 7564, 78, 12]
for weight in weights:
message = f"It weights: {weight:5} kilograms."
print(message)
It weights: 125 kilograms. It weights: 5 kilograms. It weights: 7564 kilograms. It weights: 78 kilograms. It weights: 12 kilograms.
De gewichten zijn nu rechts uitgelijnd. Wellicht is dit niet wat je wilt.
In onderstaande code lijnen we links uit, waarbij we de ruimte voor 6 tekens reserveren:
weights = [125, 5, 7564, 78, 12]
for weight in weights:
message = f"It weights: {weight:<6} kilograms."
print(message)
It weights: 125 kilograms. It weights: 5 kilograms. It weights: 7564 kilograms. It weights: 78 kilograms. It weights: 12 kilograms.
- Hierbij betekent de 6 dat voor 6 tekens ruimte wordt gereserveerd.
- Je gebruikt de volgende tekens voor verschillende soorten uitlijning:
- < voor links.
- > voor rechts.
- ^ voor midden.
7. Multi-lines & f-strings
Het kan zijn dat je een erg lange boodschap wilt samenstellen. In dat geval is het wellicht wat veel om op 1 regel te definiëren, zoals we in onderstaand voorbeeld zien:
first_name = "John"
last_name = "Doe"
length = 1.7542
weight = 78
country = "The Netherlands"
province = "Noord-Holland"
message = f"The person {first_name} {last_name} lives in {country} in province {province}. Its length is {length} meters and its weight {weight} kilograms."
print(message)
The person John Doe lives in The Netherlands in province Noord-Holland. Its length is 1.7542 meters and its weight 78 kilograms.
Dit kun je gemakkelijk opsplitsen in meerdere regels door ronde haken te gebruiken. Zie hiervoor de volgende code:
first_name = "John"
last_name = "Doe"
length = 1.7542
weight = 78
country = "The Netherlands"
province = "Noord-Holland"
message = (
f"The person {first_name} {last_name} lives in {country} in province {province}. "
f"Its length is {length} meters and its weight {weight} kilograms."
)
print(message)
The person John Doe lives in The Netherlands in province Noord-Holland. Its length is 1.7542 meters and its weight 78 kilograms.
Let hierbij op het volgende:
- Gebruik ronde haken.
- Gebruik voor iedere regel een f-string.
- Gebruik aan het einde van een regel geen komma.
Je ziet dat je zo gemakkelijk een lange boodschap in meerdere regels kunt definiëren. Dit maakt je code beter leesbaar.
8. Tot slot
We hebben gezien dat een f-string gebruik kan worden om een string op te maken met waarden uit variabelen. Dit is handig om resultaten uit je code te tonen, of voor bijvoorbeeld logging van je code.
Er zijn voor verschillende soorten data verschillende opties. Denk aan getallen, percentages en datums. Je kunt waarden van variabelen uitlijnen en padding toevoegen voor een betere leesbaarheid. Wanneer je boodschappen langer worden kun je ze in meerdere regels opsplitsen voor een betere leesbaarheid.
Wil je nog veel meer leren over met mogelijkheden met Python voor Data Science? Schrijf je dan in voor onze Python cursus voor data science, onze machine learning training, onze data science opleiding of onze data science bootcamp en leer met vertrouwen te programmeren en analyseren in Python. Nadat je een van onze trainingen hebt gevolgd kun je zelfstandig verder aan de slag. Je kunt ook altijd even contact opnemen als je een vraag hebt.
Download één van onze opleidingsbrochures voor meer informatie
Peter is een ervaren data scientist en python trainer. Na zijn studie aan de Technische Universiteit Delft heeft hij zich altijd bezig gehouden met data en diverse programmeertalen. Peter heeft veel data analyses uitgevoerd en processen geautomatiseerd met Python in productieomgevingen.