Ak pri delení reťazca oddeleného čiarkou na zoznam v jazyku Python nie sú medzi nimi medzery, funguje len funkcia split(). Ak tam medzery sú, je užitočné kombinovať to s funkciou strip(), aby sa odstránili dodatočné medzery. Okrem toho je použitie zápisu porozumenia zoznamu inteligentný spôsob zápisu.
V tejto časti najprv vysvetlíme nasledovné.
- Rozdeliť reťazec so zadaným oddeľovačom a vrátiť ho ako zoznam
split()
- Odstránenie nadbytočných znakov zo začiatku a konca reťazca.
strip()
- Zápis porozumenia zoznamu na použitie funkcií a metód na prvky zoznamu.
Ukazuje tiež, ako vytvoriť zoznam reťazcov oddelených medzerami a čiarkami odstránením medzier, ako je znázornené nižšie.'one, two, three'
Okrem toho sa budeme zaoberať týmito otázkami
- Ako ho získať ako zoznam čísel
- Ako použiť funkciu join() na spojenie zoznamu a opätovné vytvorenie reťazca
split(): Rozdeliť reťazec so zadaným oddeľovačom a vrátiť ho ako zoznam
Pomocou metódy split() pre reťazce môžete reťazec rozdeliť zadaným oddeľovačom a získať ho ako zoznam (pole). Zadaný oddeľovač možno určiť pomocou nasledujúceho argumentu.sep
Ak je argument sep vynechaný a nie je zadaný žiadny oddeľovač, rozdelí reťazec podľa medzier a vráti zoznam. Postupné medzery a tabulátory tiež rozdelia zoznam, takže ak chcete vytvoriť zoznam reťazcov oddelených tabulátorom, môžete použiť split() bez argumentu.
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']
Ak je v argumente sep uvedený oddeľovač, rozdelí zoznam týmto reťazcom a vráti zoznam.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
V prípade reťazca oddeleného čiarkou, ak sa v ňom nenachádza žiadna biela medzera navyše, nie je problém, ale ak spustíte funkciu split() s čiarkou ako oddeľovačom pre reťazec oddelený čiarkou + bielou medzerou, vznikne zoznam reťazcov s bielou medzerou na začiatku.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Ako oddeľovač môžete použiť čiarku + medzeru, ale nebude to fungovať, ak je počet medzier v pôvodnom reťazci iný.', '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
Metódu strip(), ktorá bude vysvetlená ďalej, možno použiť na riešenie dvoch medzier.
strip(): Odstránenie nadbytočných znakov zo začiatku a konca reťazca.
Strip() je metóda na odstránenie nadbytočných znakov zo začiatku a konca reťazca.
Ak je argument vynechaný, vráti sa nový reťazec s odstránenými bielymi znakmi. Pôvodný reťazec sa nezmení.
s = ' one ' print(s.strip()) # one print(s) # one
Ak je ako argument zadaný reťazec, znaky obsiahnuté v reťazci sa odstránia.
s = '-+-one-+-' print(s.strip('-+')) # one
V tomto prípade sa medzery neodstraňujú. Preto ak chcete odstrániť aj biele znaky, odovzdajte ako argument reťazec obsahujúci medzery, ako je uvedené nižšie.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
Funkcia strip() spracúva oba konce, ale k dispozícii sú aj nasledujúce funkcie.
lstrip()
:Proces je len začiatokrstrip()
:Spracujte iba koniec riadku.
Zápis porozumenia zoznamu: použitie funkcií a metód na prvky zoznamu
Ak chcete aplikovať funkciu alebo metódu na prvky zoznamu, je rozumné použiť zápis porozumenia zoznamu namiesto cyklu for, ak chcete na konci získať zoznam.
- Súvisiace články:Používanie notácie zoznamov jazyka Python
Tu použijeme funkciu strip() na zoznam získaný rozdelením reťazca pomocou funkcie split(). Prebytočné biele znaky v reťazci oddelenom čiarkou, ktorý obsahuje biele znaky, možno odstrániť a vytvoriť tak zoznam.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Ak sa tento postup použije na prázdny reťazec, možno získať zoznam s jedným prázdnym reťazcom ako prvkom.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Ak chcete získať prázdny zoznam pre prázdny reťazec, môžete nastaviť podmienenú vetvu v zápise porozumenia zoznamu.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
Ak tiež chýba prvok oddelený čiarkou, ako je opísané vyššie, prvá metóda ho vypíše ako prázdny reťazcový prvok.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Ak chcete chýbajúce časti ignorovať, môžete v zápise porozumenia zoznamu nastaviť podmienenú vetvu.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Získať ako zoznam čísel
Ak chcete získať reťazec čísel oddelený čiarkou ako zoznam čísel namiesto reťazca, použite funkciu int() alebo float() na konverziu reťazca na číslo v notácii porozumenia zoznamu.
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(): Zlúčiť zoznam a získať ho ako reťazec
Ak chcete spojiť zoznam a získať reťazce oddelené určitým oddeľovačom, použite metódu join().
Je ľahké urobiť chybu, ale všimnite si, že join() je reťazcová metóda, nie metóda zoznamu. Zoznam sa uvádza ako argument.
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
Môžete ho napísať v jednom riadku takto.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Ak chcete zmeniť len pevný oddeľovač, je jednoduchšie nahradiť ho pomocou metódy replace().
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three