Python, split na rozdelenie reťazca oddeleného čiarkou, odstránenie bielych znakov a prevod na zoznam

obchodné

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 zoznamsplit()
  • 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čiatok
  • rstrip():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.

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
Copied title and URL