web2 logo

Python strings

Een string kan tussen single quotes staan of tussen double quotes, welke je gebruikt zal afhankelijk zijn van de vraag of er in de string zelf nog single of double quotes voorkomen.
Je kunt een string op het scherm zetten met print(). Twee strings aan elkaar plakken kan met het plusteken:
print("Hallo"+" wereld")
Je moet dan zelf de spaties toevoegen en alles wat je met een plusteken aan elkaar plakt moet een string zijn.
Je kunt in de printfunctie ook de dingen die je op het scherm wilt zetten scheiden door komma's. Python voegt dan zelf spaties toe. Niet alles wat je in een printstatement zet hoeft dan een string te zijn als je komma's gebruikt:
>>> print('over',2,'dagen')
over 2 dagen

>>> print('over'+' '+'2'+' '+'dagen')
over 2 dagen

Je kunt een string ook vermenigvuldigen met een geheel getal (een integer). Het resultaat is dan dat deze string een aantal maal achter elkaar geplakt wordt:
mijnstring = 'hallo'
mijn3string = mijnstring*3
print(mijn3string)
> hallohallohallo
Als je een string met nul of een negatief getal vermenigvuldigd, dan krijg je een lege string.

Strings zijn immutable, je kunt een string alleen aanpassen door een nieuw toewijzing, niet via de functies die op bijvoorbeeld lists gebruikt worden zoals append(), pop() of insert(). Je kunt wel de lengte van een string krijgen via len() en je kunt ook de index gebruiken op te zien wat er op een bepaalde positie in een string staat. Indexen beginnen bij 0.
Bijvoorbeeld:

mijnstring = "Python leren is leuk"
print(len(mijnstring))
> 20
print(mijnstring[1])
> y

Je kunt ook een gedeelte van een string opvragen. Het snijden van een string gaat met de dubbele punt notering: [start:stop:stap]. Met [start:stop] is de stap automatisch 1. Zonder cijfers krijg je de hele string: [::].
>>> mijnstring = "abcdefgh"
>>> mijnstring[3:6]
'def'
>>> mijnstring[3:6:1]
'def'
>>> mijnstring[3:6:2]
'df'
>>> mijnstring[::]
'abcdefgh'
>>> mijnstring[0:len(mijnstring):1]
'abcdefgh'
>>> mijnstring[::-1]
'hgfedcba'
>>> mijnstring[-1:-(len(mijnstring)+1):-1]
'hgfedcba'
>>> mijnstring[4:1:-2]
'ec'

Een letter vervangen in een string gaat niet omdat strings immutable zijn:

mijnstring[4] = "p"

Geeft:

TypeError: 'str' object does not support item assignment

Een string splitsen

Een string opsplisten kan met split(). Standaard is de spatie het scheidingsteken, maar andere tekens kunnen ook als scheidingsteken gebruikt worden.
Als je string hebt waar spaties is staan, dan kun je van de string een list maken door de string te splitsen op spaties met:

mijnstring = "Python leren is leuk"
mijnlist = mijnstring.split()
print(mijnlist)

Het resultaat:

['Python', 'leren', 'is', 'leuk']

Als je een string splitst die geen spaties bevat, dan krijg je een list met slechts 1 element: de hele string.
Je kunt een string ook splitsen met een ander teken als scheidingsteken, bijvoorbeeld een komma: mijnstring = "Python,leren,is,leuk"
mijnlist = mijnstring.split(",")
print(mijnlist)

Het resultaat:

['Python', 'leren', 'is', 'leuk']

Escape tekens gebruiken

De backslash "\" kan gebruikt worden om tekens, zoals aanhalingstekens, te escapen:
\"Dit is een quote\"
Ook kan de backslash gebruikt worden om bijvoorbeeld een regelbreak in een string te zetten via \n:
"Hier begint het \n en dit gaat verder op de volgende regel"
Een tab kan ook via \t.

Een print statement kan uit meerdere regels bestaan door de string tussen 3 (double of single) quotes te plaatsen (enkele en dubbele aanhalingstekens hoeven in zo'n meerregelige string niet escaped te worden):
print("""dit komt op de eerste regel
dit komt op de tweede regel
dit komt op de derde regel
""")

Een overzicht van de escape-tekens:
\' : Enkel aanhalingsteken
\" : Dubbel aanhalingsteken
\t : Tab
\n : Nieuwe regel
\\ : Backslash

Als je toch backslashes wil gebruiken, dan kan je gebruik maken van een raw-string door een r te plaatsen voor de string:

print(r'Het staat op C:\test in het bestand test.py.')

De backslash zal nu gewoon te zien zijn, er wordt geen tab getoond in dit geval.

Een list omzetten naar een string

Een list met strings kan je omzetten naar een enkele string met .join:

list1 = ['1', '2', '3']
str1 = ''.join(list1)

Als er numerieke waarden in de list staan, dan moeten die eerst worden omgezet naar strings:

list1 = [1, 2, 3]
str1 = ''.join(str(e) for e in list1)

dit geeft '123'
Je kunt er ook komma's tussen plaatsen:

list1 = [1, 2, 3]
str1 = ','.join(str(e) for e in list1)

Dit geeft: '1,2,3'

Substrings in een string vervangen met replace()

Via replace() krijg je een kopie van de originele string waarin een alle substrings zijn vervangen door een andere substring.
Het gebruik van replace() is:
str.replace(oud, nieuw [, max])
Hierin is:
oud - de oude substring die je wil vervangen
nieuw - de nieuwe substring die de oude gaat vervangen
max (optioneel) - het maximum aantal keer dat je de oude substring wil vervangen door de nieuwe substring
Als je geen max opgeeft, dan worden alle oude substrings vervangen door nieuwe substrings.

Toegevoegd door: Kees de Keijzer
Twitter: @kdkq

~ python ~

~ Onderwerpen ~

Dit is een website zonder pop-ups

~ Links ~

Design & Development by Cyberwebdesign.nl for web2.nl © 2020.