Python Strings Beheersen: Aanmaken, Benaderen en Manipuleren
Strings Aanmaken
Strings zijn onder de meest populaire typen in Python. We kunnen ze eenvoudig aanmaken door karakters tussen aanhalingstekens te plaatsen. Python behandelt enkele quotes hetzelfde als dubbele quotes. Strings aanmaken is zo simpel als een waarde toewijzen aan een variabele. Bijvoorbeeld:
var1 = 'Hello World!' var2 = "Python Programmeren"
Waarden in Strings Benaderen
Python ondersteunt geen karaktertype; deze worden behandeld als strings van lengte één, dus ook als substring.
Om substrings te benaderen, gebruik je de vierkante haken voor slicing samen met de index of indices om je substring te verkrijgen. Bijvoorbeeld:
#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Programmeren" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
var1[0]: H var2[1:5]: ytho
Strings Updaten
Je kunt een bestaande string "updaten" door (her)toewijzing van een variabele aan een andere string. De nieuwe waarde kan gerelateerd zijn aan de vorige waarde of een volledig andere string. Bijvoorbeeld:
#!/usr/bin/python var1 = 'Hello World!' print "Bijgewerkte String :- ", var1[:6] + 'Python'
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
Bijgewerkte String :- Hello Python
Escape Karakters
De volgende tabel toont een lijst van escape- of niet-printbare karakters die vertegenwoordigd kunnen worden met backslash-notatie.
Een escape-karakter wordt geïnterpreteerd; in zowel enkele als dubbele quotes.
| Backslash-notatie | Hexadecimaal karakter | Beschrijving |
|---|---|---|
| \a | 0x07 | Bel of alert |
| \b | 0x08 | Backspace |
| \cx | Control-x | |
| \C-x | Control-x | |
| \e | 0x1b | Escape |
| \f | 0x0c | Formfeed |
| \M-\C-x | Meta-Control-x | |
| \n | 0x0a | Nieuwe regel (Newline) |
| \nnn | Octale notatie, waar n in bereik 0-7 | |
| \r | 0x0d | Carriage return |
| \s | 0x20 | Spatie |
| \t | 0x09 | Tab |
| \v | 0x0b | Verticale tab |
| \x | Karakter x | |
| \xnn | Hexadecimale notatie, waar n in bereik 0-9, a-f, of A-F |
String Speciale Operatoren
Neem aan dat string-variabele a 'Hello' bevat en variabele b 'Python', dan:
| Operator | Beschrijving | Voorbeeld |
|---|---|---|
| + | Concatenatie – Voegt waarden aan beide kanten van de operator toe. | a + b geeft HelloPython |
| * | Herhaling – Maakt nieuwe strings, concateneert meerdere kopieën van dezelfde string. | a*2 geeft HelloHello |
| [] | Slice – Geeft het karakter vanaf de gegeven index. | a[1] geeft e |
| [ : ] | Range Slice – Geeft de karakters uit het gegeven bereik. | a[1:4] geeft ell |
| in | Lidmaatschap – Retourneert true als een karakter in de string bestaat. | H in a geeft 1 |
| not in | Lidmaatschap – Retourneert true als een karakter niet in de string bestaat. | M not in a geeft 1 |
| r/R | Raw String – Onderdrukt de werkelijke betekenis van escape-karakters. Syntaxis is hetzelfde als normale strings, met uitzondering van de raw string operator, de letter "r," die de aanhalingstekens voorafgaat. De "r" kan lowercase (r) of uppercase (R) zijn en moet direct voor het eerste aanhalingsteken staan. | print r'\n' print \n en print R'\n' print \n |
| % | Format – Voert string-formattering uit. | Zie volgende sectie |
String Formatting Operator
Een van Python's coolste features is de string-format-operator %. Deze operator is uniek voor strings en compenseert het gebrek aan functies uit C's printf()-familie. Hier is een simpel voorbeeld:
#!/usr/bin/python
print "Mijn naam is %s en gewicht is %d kg!" % ('Zara', 21)
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
Mijn naam is Zara en gewicht is 21 kg!
Hier is de volledige lijst met symbolen die samen met % gebruikt kunnen worden:
| Format Symbool | Conversie |
|---|---|
| %c | karakter |
| %s | string conversie via str() voor formattering |
| %i | gesigneerd decimaal integer |
| %d | gesigneerd decimaal integer |
| %u | ongezigneerd decimaal integer |
| %o | octaal integer |
| %x | hexadecimaal integer (lowercase letters) |
| %X | hexadecimaal integer (UPPERCASE letters) |
| %e | exponentiële notatie (met lowercase 'e') |
| %E | exponentiële notatie (met UPPERCASE 'E') |
| %f | floating-point reëel getal |
| %g | de kortere van %f en %e |
| %G | de kortere van %f en %E |
Andere ondersteunde symbolen en functionaliteit:
| Symbool | Functionaliteit |
|---|---|
| * | argument specificeert breedte of precisie |
| - | links uitlijning |
| + | teken weergeven |
| <sp> | lege ruimte voor positief getal |
| # | voeg octale leidende nul ('0') of hexadecimale leidende '0x'/'0X' toe |
| 0 | vul links op met nullen (ipv spaties) |
| % | '%%' laat je met een enkele letterlijke '%' |
| (var) | mapping variabele (dictionary argumenten) |
| m.n. | m is minimum totale breedte, n is aantal cijfers na decimaal punt |
Tripple Quotes
Python's tripple quotes lossen het probleem op door strings over meerdere regels te laten lopen, inclusief letterlijke NEWLINEs, TABs, en andere speciale karakters.
De syntaxis voor tripple quotes bestaat uit drie opeenvolgende enkele of dubbele quotes.
#!/usr/bin/python para_str = """dit is een lange string die bestaat uit verschillende regels en niet-printbare karakters zoals TAB ( \t ) en ze zullen zo getoond worden. NEWLINEs binnen de string, of expliciet gegeven zoals binnen de haakjes [ \n ], of gewoon een NEWLINE binnen de variabele-toewijzing zullen ook verschijnen.""" print para_str
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat. Let op hoe elk speciaal karakter geconverteerd is naar de afgedrukte vorm, tot de laatste NEWLINE aan het einde van de string tussen "up." en de sluitende tripple quotes. Ook let op dat NEWLINEs voorkomen met expliciete carriage return aan het einde van een regel of de escape-code (\n):
dit is een lange string die bestaat uit verschillende regels en niet-printbare karakters zoals TAB ( ) en ze zullen zo getoond worden. NEWLINEs binnen de string, of expliciet gegeven zoals binnen de haakjes [ ], of gewoon een NEWLINE binnen de variabele-toewijzing zullen ook verschijnen.
Raw strings behandelen de backslash helemaal niet als speciaal karakter. Elk karakter dat je in een raw string zet, blijft zoals je het schreef:
#!/usr/bin/python print 'C:\\nowhere'
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
C:\nowhere
Nu laten we raw string gebruiken. We zetten de expressie in r'expression' als volgt:
#!/usr/bin/python print r'C:\\nowhere'
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
C:\\nowhere
Unicode String
Normale strings in Python worden intern opgeslagen als 8-bit ASCII, terwijl Unicode-strings opgeslagen worden als 16-bit Unicode. Dit stelt een meer gevarieerde set karakters toe, inclusief speciale karakters uit de meeste talen ter wereld. Ik beperk mijn behandeling van Unicode-strings tot het volgende:
#!/usr/bin/python print u'Hello, world!'
Wanneer de bovenstaande code wordt uitgevoerd, produceert dit het volgende resultaat:
Hello, world!
Zoals je ziet, gebruiken Unicode-strings het prefix u, net als raw strings het prefix r gebruiken.
Ingebouwde String Methodes
Python bevat de volgende ingebouwde methodes om strings te manipuleren:
| Nr. | Methodes met Beschrijving |
|---|---|
| 1 | capitalize() Kapitaliseert eerste letter van string. |
| 2 | center(width, fillchar) Retourneert een met spaties gevulde string met de originele string gecentreerd tot een totaal van width kolommen. |
| 3 | count(str, beg=0, end=len(string)) Telt hoe vaak str in string of substring voorkomt als start-index beg en eind-index end gegeven zijn. |
| 4 | decode(encoding='UTF-8', errors='strict') Decodeert de string met de codec geregistreerd voor encoding. encoding defaults naar standaard string encoding. |
| 5 | encode(encoding='UTF-8', errors='strict') Retourneert gecodeerde string-versie; bij fout standaard ValueError tenzij errors 'ignore' of 'replace' is. |
| 6 | endswith(suffix, beg=0, end=len(string)) Bepaalt of string of substring (met gegeven start/end index) eindigt met suffix; true als zo, anders false. |
| 7 | expandtabs(tabsize=8) Vergroot tabs in string naar meerdere spaties; standaard 8 spaties per tab als tabsize niet gegeven. |
| 8 | find(str, beg=0, end=len(string)) Bepaalt of str in string of substring voorkomt (met gegeven indices); retourneert index als gevonden, -1 anders. |
| 9 | index(str, beg=0, end=len(string)) Zelfde als find(), maar gooit exception als str niet gevonden. |
| 10 | isalnum() True als string minstens 1 karakter heeft en alle karakters alfanumeriek zijn, anders false. |
| 11 | isalpha() True als string minstens 1 karakter heeft en alle karakters alfabetisch zijn, anders false. |
| 12 | isdigit() True als string alleen cijfers bevat, anders false. |
| 13 | islower() True als string minstens 1 gecaseerd karakter heeft en alle gecaseerde karakters lowercase zijn, anders false. |
| 14 | isnumeric() True als een unicode-string alleen numerieke karakters bevat, anders false. |
| 15 | isspace() True als string alleen whitespace-karakters bevat, anders false. |
| 16 | istitle() True als string correct "getiteld" is, anders false. |
| 17 | isupper() True als string minstens één gecaseerd karakter heeft en alle gecaseerde karakters uppercase zijn, anders false. |
| 18 | join(seq) Voegt (concateneert) de string-representaties van elementen in sequence seq tot een string, met separator-string. |
| 19 | len(string) Retourneert de lengte van de string. |
| 20 | ljust(width[, fillchar]) Retourneert een met spaties gevulde string met de originele string links uitgelijnd tot width kolommen. |
| 21 | lower() Converteert alle hoofdletters in string naar kleine letters. |
| 22 | lstrip() Verwijdert alle leading whitespace in string. |
| 23 | maketrans() Retourneert een vertaaltabel voor gebruik in translate-functie. |
| 24 | max(str) Retourneert het maximaal alfabetische karakter uit string str. |
| 25 | min(str) Retourneert het minimaal alfabetische karakter uit string str. |
| 26 | replace(old, new[, max]) Vervangt alle voorkomens van old in string met new of maximaal max voorkomens als max gegeven. |
| 27 | rfind(str, beg=0, end=len(string)) Zelfde als find(), maar zoekt achteruit in string. |
| 28 | rindex(str, beg=0, end=len(string)) Zelfde als index(), maar zoekt achteruit in string. |
| 29 | rjust(width[, fillchar]) Retourneert een met spaties gevulde string met de originele string rechts uitgelijnd tot width kolommen. |
| 30 | rstrip() Verwijdert alle trailing whitespace van string. |
| 31 | split(str="", num=string.count(str)) Splitst string volgens delimiter str (spatie als niet gegeven) en retourneert lijst van substrings; max num substrings als gegeven. |
| 32 | splitlines(num=string.count('\n')) Splitst string op alle (of num) NEWLINEs en retourneert lijst van elke regel zonder NEWLINEs. |
| 33 | startswith(str, beg=0, end=len(string)) Bepaalt of string of substring (met gegeven indices) begint met substring str; true als zo, anders false. |
| 34 | strip([chars]) Voert zowel lstrip() als rstrip() uit op string. |
| 35 | swapcase() Keert case om voor alle letters in string. |
| 36 | title() Retourneert "getitelde" versie van string: alle woorden beginnen met hoofdletter, rest lowercase. |
| 37 | translate(table, deletechars="") Vertaalt string volgens vertaaltabel str(256 chars), verwijdert die in del-string. |
| 38 | upper() Converteert kleine letters in string naar hoofdletters. |
| 39 | zfill(width) Retourneert originele string links opgevuld met nullen tot totaal width karakters; bedoeld voor getallen, zfill() behoudt eventueel teken (min één nul). |
| 40 | isdecimal() True als een unicode-string alleen decimale karakters bevat, anders false. |
Python
- C# Strings: Fundamentals, Operaties & Geavanceerde Technieken
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-stringoperaties beheersen: Replace, Join, Split, Reverse en case-conversie
- Python's strip()-methode beheersen: Uitgebreide handleiding & praktische voorbeelden
- Python's str.count() beheersen: Karakters & substrings tellen met voorbeelden
- Python `format()` strings beheersen met duidelijke voorbeelden
- Python len(): Praktische handleiding voor het meten van objectlengtes
- Python's String.find()-methode beheersen: Syntaxis, voorbeelden & alternatieven
- Python's enumerate() meesteren: lussen met indices voor lijsten, tuples, strings en dictionaries
- Java Strings beheersen: aanmaken, methodes en best practices