Python-snaren
Python-snaren
In deze tutorial leer je strings maken, formatteren, wijzigen en verwijderen in Python. Ook maakt u kennis met verschillende tekenreeksbewerkingen en -functies.
Video:Python-strings
Wat is String in Python?
Een string is een reeks karakters.
Een karakter is gewoon een symbool. De Engelse taal heeft bijvoorbeeld 26 tekens.
Computers werken niet met karakters, maar met getallen (binair). Ook al zie je misschien tekens op je scherm, intern worden ze opgeslagen en gemanipuleerd als een combinatie van nullen en enen.
Deze conversie van tekens naar een getal wordt codering genoemd en het omgekeerde proces is decodering. ASCII en Unicode zijn enkele van de populaire coderingen die worden gebruikt.
In Python is een string een reeks Unicode-tekens. Unicode is geïntroduceerd om elk teken in alle talen op te nemen en uniformiteit in de codering te brengen. U kunt over Unicode leren van Python Unicode.
Hoe maak je een string in Python?
Tekenreeksen kunnen worden gemaakt door tekens tussen enkele aanhalingstekens of dubbele aanhalingstekens te plaatsen. Zelfs driedubbele aanhalingstekens kunnen in Python worden gebruikt, maar worden over het algemeen gebruikt om tekenreeksen met meerdere regels en docstrings weer te geven.
# defining strings in Python
# all of the following are equivalent
my_string = 'Hello'
print(my_string)
my_string = "Hello"
print(my_string)
my_string = '''Hello'''
print(my_string)
# triple quotes string can extend multiple lines
my_string = """Hello, welcome to
the world of Python"""
print(my_string)
Wanneer u het programma uitvoert, is de uitvoer:
Hello Hello Hello Hello, welcome to the world of Python
Hoe krijg ik toegang tot tekens in een string?
We hebben toegang tot individuele tekens met behulp van indexering en een reeks tekens met behulp van slicing. Index begint vanaf 0. Als je probeert toegang te krijgen tot een teken dat buiten het indexbereik valt, krijg je een IndexError
. De index moet een geheel getal zijn. We kunnen geen floats of andere typen gebruiken, dit resulteert in TypeError
.
Python staat negatieve indexering toe voor zijn sequenties.
De index van -1
verwijst naar het laatste item, -2
naar het een na laatste item enzovoort. We hebben toegang tot een reeks items in een string met behulp van de slicing-operator :
(dubbele punt).
#Accessing string characters in Python
str = 'programiz'
print('str = ', str)
#first character
print('str[0] = ', str[0])
#last character
print('str[-1] = ', str[-1])
#slicing 2nd to 5th character
print('str[1:5] = ', str[1:5])
#slicing 6th to 2nd last character
print('str[5:-2] = ', str[5:-2])
Wanneer we het bovenstaande programma uitvoeren, krijgen we de volgende uitvoer:
str = programiz str[0] = p str[-1] = z str[1:5] = rogr str[5:-2] = am
Als we proberen toegang te krijgen tot een index buiten het bereik of andere getallen dan een geheel getal gebruiken, krijgen we fouten.
# index must be in range
>>> my_string[15]
...
IndexError: string index out of range
# index must be an integer
>>> my_string[1.5]
...
TypeError: string indices must be integers
Snijden kan het beste worden gevisualiseerd door de index als tussen de elementen te beschouwen, zoals hieronder weergegeven.
Als we toegang willen krijgen tot een bereik, hebben we de index nodig die het gedeelte van de tekenreeks afsnijdt.
Hoe verander of verwijder je een string?
Snaren zijn onveranderlijk. Dit betekent dat elementen van een string niet kunnen worden gewijzigd nadat ze zijn toegewezen. We kunnen eenvoudig verschillende strings opnieuw toewijzen aan dezelfde naam.
>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'
We kunnen geen tekens uit een tekenreeks verwijderen of verwijderen. Maar de string volledig verwijderen is mogelijk met behulp van de del
zoekwoord.
>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined
Python String-bewerkingen
Er zijn veel bewerkingen die met strings kunnen worden uitgevoerd, waardoor het een van de meest gebruikte gegevenstypen in Python is.
Ga voor meer informatie over de gegevenstypen die beschikbaar zijn in Python naar:Python-gegevenstypen
Aaneenschakeling van twee of meer strings
Het samenvoegen van twee of meer strings tot een enkele wordt concatenatie genoemd.
De + operator doet dit in Python. Door simpelweg twee letterlijke tekenreeksen samen te schrijven, worden ze ook samengevoegd.
De * operator kan worden gebruikt om de string een bepaald aantal keren te herhalen.
# Python String Operations
str1 = 'Hello'
str2 ='World!'
# using +
print('str1 + str2 = ', str1 + str2)
# using *
print('str1 * 3 =', str1 * 3)
Wanneer we het bovenstaande programma uitvoeren, krijgen we de volgende uitvoer:
str1 + str2 = HelloWorld! str1 * 3 = HelloHelloHello
Door twee letterlijke tekenreeksen samen te schrijven, worden ze ook samengevoegd, zoals + telefoniste.
Als we strings in verschillende regels willen samenvoegen, kunnen we haakjes gebruiken.
>>> # two string literals together
>>> 'Hello ''World!'
'Hello World!'
>>> # using parentheses
>>> s = ('Hello '
... 'World')
>>> s
'Hello World'
Itereren via een string
We kunnen een string doorlopen met een for-lus. Hier is een voorbeeld om het aantal 'l's in een string te tellen.
# Iterating through a string
count = 0
for letter in 'Hello World':
if(letter == 'l'):
count += 1
print(count,'letters found')
Wanneer we het bovenstaande programma uitvoeren, krijgen we de volgende uitvoer:
3 letters found
String lidmaatschapstest
We kunnen testen of een substring binnen een string bestaat of niet, met behulp van het trefwoord in
.
>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False
Ingebouwde functies om met Python te werken
Verschillende ingebouwde functies die werken met reeksen, werken ook met strings.
Enkele van de meest gebruikte zijn enumerate()
en len()
. De enumerate()
functie retourneert een enumerate object. Het bevat de index en waarde van alle items in de string als paren. Dit kan handig zijn voor iteratie.
Evenzo, len()
geeft de lengte (aantal tekens) van de tekenreeks terug.
str = 'cold'
# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str) = ', list_enumerate)
#character count
print('len(str) = ', len(str))
Wanneer we het bovenstaande programma uitvoeren, krijgen we de volgende uitvoer:
list(enumerate(str) = [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')] len(str) = 4
Python String-opmaak
Escape-reeks
Als we een tekst willen afdrukken zoals
Hij zei:"Wat is daar?"
, we kunnen geen enkele aanhalingstekens of dubbele aanhalingstekens gebruiken. Dit resulteert in een SyntaxError
omdat de tekst zelf zowel enkele als dubbele aanhalingstekens bevat.
>>> print("He said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('He said, "What's there?"')
...
SyntaxError: invalid syntax
Een manier om dit probleem te omzeilen is door drievoudige aanhalingstekens te gebruiken. Als alternatief kunnen we escape-reeksen gebruiken.
Een escape-reeks begint met een backslash en wordt anders geïnterpreteerd. Als we een enkel aanhalingsteken gebruiken om een tekenreeks weer te geven, moeten alle enkele aanhalingstekens in de tekenreeks een escapeteken krijgen. Hetzelfde geldt voor dubbele aanhalingstekens. Hier is hoe het kan worden gedaan om de bovenstaande tekst weer te geven.
# using triple quotes
print('''He said, "What's there?"''')
# escaping single quotes
print('He said, "What\'s there?"')
# escaping double quotes
print("He said, \"What's there?\"")
Wanneer we het bovenstaande programma uitvoeren, krijgen we de volgende uitvoer:
He said, "What's there?" He said, "What's there?" He said, "What's there?"
Hier is een lijst met alle escape-reeksen die door Python worden ondersteund.
Escape-reeks | Beschrijving |
---|---|
\newline | Backslash en nieuwe regel genegeerd |
\\ | Backslash |
\' | Enkel aanhalingsteken |
\" | Dubbele aanhalingstekens |
\a | ASCII-bel |
\b | ASCII-backspace |
\f | ASCII Formfeed |
\n | ASCII-regelinvoer |
\r | ASCII koetsretour |
\t | ASCII Horizontaal tabblad |
\v | ASCII verticaal tabblad |
\ooo | Teken met octale waarde ooo |
\xHH | Teken met hexadecimale waarde HH |
Hier zijn enkele voorbeelden
>>> print("C:\\Python32\\Lib")
C:\Python32\Lib
>>> print("This is printed\nin two lines")
This is printed
in two lines
>>> print("This is \x48\x45\x58 representation")
This is HEX representation
Onbewerkte tekenreeks om escape-reeks te negeren
Soms willen we misschien de escape-reeksen binnen een string negeren. Om dit te doen kunnen we r
. plaatsen of R
voor de snaar. Dit houdt in dat het een onbewerkte tekenreeks is en dat elke escape-reeks erin wordt genegeerd.
>>> print("This is \x61 \ngood example")
This is a
good example
>>> print(r"This is \x61 \ngood example")
This is \x61 \ngood example
De format()-methode voor het opmaken van tekenreeksen
De format()
methode die beschikbaar is met het string-object is zeer veelzijdig en krachtig in het formatteren van strings. Opmaakstrings bevatten accolades {}
als tijdelijke aanduidingen of vervangende velden die worden vervangen.
We kunnen positionele argumenten of trefwoordargumenten gebruiken om de volgorde te specificeren.
# Python string format() method
# default(implicit) order
default_order = "{}, {} and {}".format('John','Bill','Sean')
print('\n--- Default Order ---')
print(default_order)
# order using positional argument
positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print('\n--- Positional Order ---')
print(positional_order)
# order using keyword argument
keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print('\n--- Keyword Order ---')
print(keyword_order)
Wanneer we het bovenstaande programma uitvoeren, krijgen we de volgende uitvoer:
--- Default Order --- John, Bill and Sean --- Positional Order --- Bill, John and Sean --- Keyword Order --- Sean, Bill and John
De format()
methode kan optionele formaatspecificaties hebben. Ze worden gescheiden van de veldnaam met een dubbele punt. We kunnen bijvoorbeeld links uitvullen <
, rechts uitvullen >
of centreer ^
een string in de gegeven ruimte.
We kunnen ook gehele getallen opmaken als binair, hexadecimaal, enz. en floats kunnen worden afgerond of weergegeven in het exponentformaat. Er zijn tal van opmaak die u kunt gebruiken. Bezoek hier voor alle tekenreeksopmaak die beschikbaar is met de format()
methode.
>>> # formatting integers
>>> "Binary representation of {0} is {0:b}".format(12)
'Binary representation of 12 is 1100'
>>> # formatting floats
>>> "Exponent representation: {0:e}".format(1566.345)
'Exponent representation: 1.566345e+03'
>>> # round off
>>> "One third is: {0:.3f}".format(1/3)
'One third is: 0.333'
>>> # string alignment
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter | bread | ham|'
Opmaak in oude stijl
We kunnen zelfs strings formatteren zoals de oude sprintf()
stijl die wordt gebruikt in de programmeertaal C. We gebruiken de %
operator om dit te bereiken.
>>> x = 12.3456789
>>> print('The value of x is %3.2f' %x)
The value of x is 12.35
>>> print('The value of x is %3.4f' %x)
The value of x is 12.3457
Algemene Python-stringmethoden
Er zijn tal van methoden beschikbaar met het string-object. De format()
methode die we hierboven noemden is er een van. Enkele veelgebruikte methoden zijn lower()
, upper()
, join()
, split()
, find()
, replace()
etc. Hier is een volledige lijst van alle ingebouwde methoden om met strings in Python te werken.
>>> "PrOgRaMiZ".lower()
'programiz'
>>> "PrOgRaMiZ".upper()
'PROGRAMIZ'
>>> "This will split all words into a list".split()
['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list']
>>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string'])
'This will join all words into a string'
>>> 'Happy New Year'.find('ew')
7
>>> 'Happy New Year'.replace('Happy','Brilliant')
'Brilliant New Year'
Python
- C#-tekenreeks
- Python-woordenboek
- Java-strings
- Java enum Strings
- Python-strings:vervangen, samenvoegen, splitsen, omkeren, hoofdletters en kleine letters
- Python String strip() Functie met VOORBEELD
- Python String count() met VOORBEELDEN
- Python String format() Leg uit met VOORBEELDEN
- Python-tekenreekslengte | len() methode Voorbeeld
- Methode Python String find() met voorbeelden
- Enumerate() Functie in Python:Loop, Tuple, String (voorbeeld)