Bij het splitsen van een door komma's gescheiden string in een lijst in Python, als er geen spaties tussen staan, zal gewoon split() werken. Als er wel spaties tussen staan, is het handig om het te combineren met strip() om de extra spaties te verwijderen. Daarnaast is het gebruik van de list comprehension notatie een slimme manier om te schrijven.
In dit deel leggen wij eerst het volgende uit.
- Splits een string met een opgegeven scheidingsteken en geef het terug als een lijst
split()
- Verwijder extra tekens van het begin en einde van een string.
strip()
- Notatie van lijstbegrip om functies en methoden toe te passen op lijstelementen.
Het laat ook zien hoe je een lijst kunt maken van strings gescheiden door spaties en komma's door spaties te verwijderen, zoals hieronder getoond.'one, two, three'
Daarnaast zullen we het volgende bespreken
- Hoe krijg ik het als een lijst van nummers
- Hoe join() gebruiken om een lijst samen te voegen en er weer een string van te maken
- split(): Splits een string met een opgegeven scheidingsteken en geef het terug als een lijst
- strip(): Verwijder extra tekens van het begin en einde van een string.
- Notatie van lijstbegrip: functies en methoden toepassen op lijstelementen
- Verkrijg als een lijst van getallen
- join(): Voeg een lijst samen en krijg het als een string
split(): Splits een string met een opgegeven scheidingsteken en geef het terug als een lijst
Met de methode split() voor strings kan je een string splitsen met een gespecificeerd scheidingsteken en het als een lijst (array) krijgen. Het opgegeven scheidingsteken kan worden opgegeven met het volgende argument.sep
Als het argument sep is weggelaten en geen scheidingsteken is opgegeven, wordt de tekenreeks gesplitst door spaties en wordt een lijst geretourneerd. Opeenvolgende spaties en tabs zullen de lijst ook splitsen, dus als je een lijst van tab-gelimiteerde strings wilt maken, kun je split() zonder het argument gebruiken.
s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one\ttwo\tthree' l = s.split() print(l) # ['one', 'two', 'three']
Als een scheidingsteken wordt opgegeven in het sep argument, wordt de lijst door die tekenreeks gedeeld en wordt een lijst teruggegeven.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
In het geval van een door komma's gescheiden string is er geen probleem als er geen extra witruimte is, maar als je split() uitvoert met een komma als scheidingsteken voor een string gescheiden door een komma + witruimte, zul je eindigen met een lijst van strings met witruimte aan het begin.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
U kunt een komma + spatie als scheidingsteken gebruiken, maar dat werkt niet als het aantal spaties in de oorspronkelijke string anders is.', '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
De string methode strip(), die hierna wordt uitgelegd, kan worden gebruikt om met twee spaties om te gaan.
strip(): Verwijder extra tekens van het begin en einde van een string.
strip() is een methode om extra tekens te verwijderen uit het begin en einde van een string.
Als het argument wordt weggelaten, wordt een nieuwe string geretourneerd waarbij de spaties zijn verwijderd. De originele string zelf wordt niet veranderd.
s = ' one ' print(s.strip()) # one print(s) # one
Als een string als argument wordt opgegeven, worden de tekens in de string verwijderd.
s = '-+-one-+-' print(s.strip('-+')) # one
In dit geval worden spaties niet verwijderd. Als je dus ook spaties wilt verwijderen, geef dan een string met spaties als argument, zoals hieronder.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
strip() handelt beide uiteinden af, maar de volgende functies zijn ook beschikbaar.
lstrip()
:Proces slechts het beginrstrip()
:Verwerk alleen het einde van de lijn.
Notatie van lijstbegrip: functies en methoden toepassen op lijstelementen
Als je een functie of methode wilt toepassen op de elementen van een lijst, is het slim om de list comprehension notatie te gebruiken in plaats van de for loop als je de lijst aan het eind wilt krijgen.
- Verwante Artikelen:Python lijst notatie gebruiken
Hier passen we strip() toe op de lijst die verkregen wordt door de string te splitsen met split(). De extra spaties in een door komma's gescheiden tekenreeks die spaties bevat, kunnen worden verwijderd om een lijst te maken.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Wanneer dit wordt toegepast op een lege tekenreeks, kan een lijst met een enkele lege tekenreeks als element worden verkregen.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Als je een lege lijst wilt krijgen voor een lege string, kun je een voorwaardelijke vertakking opzetten in de list comprehension notatie.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
Ook als een door komma's gescheiden element ontbreekt, zoals hierboven beschreven, zal de eerste methode het als een leeg string-element vermelden.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Als u de ontbrekende delen wilt negeren, kunt u een voorwaardelijke vertakking instellen in de lijstbegripnotatie.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Verkrijg als een lijst van getallen
Als je een door komma's gescheiden tekenreeks van getallen wilt krijgen als een lijst van getallen in plaats van een tekenreeks, gebruik dan int() of float() om de tekenreeks om te zetten naar een getal in de lijstbegripnotatie.
s = '1, 2, 3, 4' l = [x.strip() for x in s.split(',')] print(l) print(type(l[0])) # ['1', '2', '3', '4'] # <class 'str'> s = '1, 2, 3, 4' l = [int(x.strip()) for x in s.split(',')] print(l) print(type(l[0])) # [1, 2, 3, 4] # <class 'int'>
join(): Voeg een lijst samen en krijg het als een string
In het tegenovergestelde patroon, als je een lijst wilt samenvoegen en strings wilt krijgen gescheiden door een specifiek scheidingsteken, gebruik je de methode join().
Het is gemakkelijk om een fout te maken, maar merk op dat join() een string methode is, geen lijst methode. De lijst wordt als argument opgegeven.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three'] print(','.join(l)) # one,two,three print('::'.join(l)) # one::two::three
Je kunt het als volgt in één regel schrijven.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Als je alleen een vast scheidingsteken wilt veranderen, is het eenvoudiger om het te vervangen met de replace() methode.
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three