2.4. Strings#

Een string is een reeks Unicode-tekens die tussen aanhalingstekens wordt geschreven. Enkele en dubbele aanhalingstekens zijn gelijkwaardig – kies de stijl waarmee je het escapen van de aanhalingstekens binnen de tekst kunt vermijden:

name    = "OpenMV Cam"
company = 'OpenMV, LLC'
message = "She said \"hi\""        # both styles can be used
same    = 'She said "hi"'

Strings met drievoudige aanhalingstekens ("""...""" of '''...''') lopen over meerdere regels en behouden de regeleinden letterlijk:

banner = """boot ok
firmware v1.28
"""
print(banner)

Uitvoer:

boot ok
firmware v1.28

2.4.1. Escapereeksen#

Binnen een gewone string leidt \ een speciaal teken in:

  • \n – nieuwe regel

  • \t – tab

  • \\ – een letterlijke backslash

  • \' / \" – een letterlijk aanhalingsteken (wanneer het anders de string zou beëindigen)

  • \xHH – het teken met hexcode HH

  • \uHHHH – het Unicode-codepunt HHHH

Wanneer een string veel backslashes bevat, plaats dan r vóór de literal om er een raw-string van te maken. Backslashes worden dan letterlijk genomen – \n blijft twee tekens lang in plaats van vervangen te worden door een nieuwe regel:

win_path = r"C:\Users\OpenMV\camera.py"
literal  = r"\n is two characters, not a newline"

2.4.2. Aaneenschakeling en herhaling#

Twee strings worden samengevoegd met +; een string wordt herhaald met *:

greeting = "Hello, " + name + "!"
line     = "-" * 40              # 40-character separator

Herhaaldelijk + in een lus reserveert bij elke iteratie een nieuwe string. Gebruik str.join() om grotere strings uit veel onderdelen op te bouwen.

2.4.3. Lengte, indexering en slicen#

len() geeft het aantal tekens in een string terug. Indexering met [] geeft een string van één teken op de opgegeven positie terug; negatieve indexen tellen vanaf het einde:

>>> s = "OpenMV"
>>> len(s)
6
>>> s[0]
'O'
>>> s[-1]
'V'

Een slice s[start:stop] geeft de substring terug vanaf positie start tot maar niet inclusief stop. Elk uiteinde kan worden weggelaten om “het begin” of “het einde” te betekenen, en een optionele derde waarde s[start:stop:step] laat je tekens overslaan.

The string "OpenMV" with position markers between each character, illustrating how a slice selects the characters between two positions.

Sliceposities bevinden zich tussen de tekens. s[2:5] selecteert de tekens op de posities 2, 3 en 4.#

>>> s = "OpenMV"
>>> s[2:5]
'enM'
>>> s[:3]
'Ope'
>>> s[3:]
'nMV'
>>> s[::-1]
'VMnepO'                     # whole string, reversed

Een slice buiten bereik geeft stilzwijgend terug welk gedeelte er ook maar bestaat – s[100:200] is de lege string "", geen fout. Indexering buiten bereik daarentegen veroorzaakt een IndexError.

2.4.4. Onveranderlijkheid#

Strings kunnen niet ter plekke worden gewijzigd. Bewerkingen die eruitzien alsof ze een string muteren, geven in werkelijkheid een nieuwe string terug en laten het origineel ongemoeid:

>>> name = "OpenMV"
>>> name.upper()
'OPENMV'
>>> name
'OpenMV'                     # unchanged

Om een string te “wijzigen” bind je de naam opnieuw aan de nieuwe waarde: name = name.upper().