Start | re split
 

re.split(, string, , )



Split med reguljära uttryck


Styrkan i re.split() är att den - till skillnad från inbyggda split() - kan splitta en sträng utefter många olika tecken.

Låt säga att vi har en sträng av ett matematiskt uttryck:

45*(5+9)-3/(60-5)

Vi vill göra om detta till en lista och splitta på varje ställe där vi har en operator eller parentes. Så vi vill splitta oavsett om det är

+ - * eller / ( )

Vi kan enkelt splitta på alla dessa tecken med re.split. Enklaste sättet att förstå det reguljära uttrycket

\*|\+|\-|\/|\(|\)

är att notera eller -operatorn | Du kan studera detta exempel på reguljära uttryck här (nytt fönster).

Så vi splittar något av dessa tecken. Ett problem är dock att med ett matematiskt uttryck med parenteser kommer vi ibland ha 2 splitter -tecken intill varandra. Detta kommer skapa tomma None '' i listan på dessa ställen som måste filtreras bort.
import re str = '45*(5+9)-3/(60-5)' tokens = re.split('(\*|\+|\-|\/|\(|\))', str) print(tokens) tokens = list(filter(None, tokens)) print(tokens)
För att slippa problematiken med None så hade vi kunnat använda re.findall() istället. Snegla gärna på findall, för att lättare förstå hur split arbetar.
import re str = '45*(5+9)-3/(60-5)' tokens = re.findall(r'([0-9\.]+|\*|\+|\-|\/|\(|\))', str) print(tokens)
Studera det reguljära uttrycket i labbet för reguljära uttryck (nytt fönster).
import re str = "Så vi splittar något av dessa tecken. Ett problem är dock att med ett matematiskt uttryck med parenteser kommer vi ibland ha 2 splitter -tecken intill varandra. Detta kommer skapa tomma None '' i listan på dessa ställen som måste filtreras bort." val = re.split("\. ", str) print(val)
Studera det reguljära uttrycket i labbet för reguljära uttryck (nytt fönster).
import re farger = ['rgb(100,150,200)','rgb(80,50,180)','rgb(70,70,70)'] def justeraFarger(farger, r,g,b): nyaFarger = [] for farg in farger: (R,G,B) = re.split("rgb\(|\,|\)", farg)[1:4] R = int(R)+r G = int(G)+g B = int(B)+b nyaFarger.append(f'rgb({R},{G},{B})') return(nyaFarger) print(farger) farger = justeraFarger(farger,10,-10,-10) print(farger)
Studera det reguljära uttrycket i labbet för reguljära uttryck (nytt fönster).
15.046119689941 ms