Python, split jakaa pilkulla erotetun merkkijonon, poistaa välilyönnit ja muuntaa listaksi.

liiketoiminta

Kun pilkulla erotettu merkkijono jaetaan luetteloksi Pythonissa, jos välissä ei ole välilyöntejä, pelkkä split() toimii. Jos välilyöntejä on, on hyödyllistä yhdistää se strip():n kanssa ylimääräisten välilyöntien poistamiseksi. Lisäksi listan ymmärtämisen merkintätavan käyttäminen on fiksu tapa kirjoittaa.

Tässä jaksossa selitetään ensin seuraavaa.

  • Jaa merkkijono määritetyllä erottimella ja palauta se listana.split()
  • Poista ylimääräiset merkit merkkijonon alusta ja lopusta.strip()
  • Luettelon ymmärtämisen merkintätapa funktioiden ja metodien soveltamiseksi luettelon elementteihin.

Siinä näytetään myös, miten välilyönneillä ja pilkuilla erotettujen merkkijonojen luettelo luodaan poistamalla välilyönnit, kuten alla näkyy.
'one, two, three'

Lisäksi keskustelemme seuraavista asioista

  • Miten se saadaan numeroluettelona
  • Miten join()-funktiota käytetään listan yhdistämiseen ja sen muuttamiseen uudelleen merkkijonoksi?

split(): Jaa merkkijono määritetyllä erottimella ja palauta se listana.

Merkkijonojen metodilla split() voit jakaa merkkijonon määritetyllä erottimella ja saada sen listana (array). Määritetyn erottimen voi määrittää seuraavalla argumentilla.sep

Jos argumentti sep jätetään pois eikä mitään erotinta ole määritetty, merkkijono jaetaan välilyönneillä ja palautetaan lista. Myös peräkkäiset välilyönnit ja tabulaattorit jakavat listan, joten jos haluat tehdä listan tabulaattorilla erotetuista merkkijonoista, voit käyttää split()-ohjelmaa ilman argumenttia.

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']

Jos sep-argumentissa on määritetty rajaaja, se jakaa listan kyseisellä merkkijonolla ja palauttaa listan.

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

Jos kyseessä on pilkulla erotettu merkkijono, jos ylimääräistä välilyöntiä ei ole, ongelmaa ei ole, mutta jos suoritat split()-toiminnon pilkulla erotetun merkkijonon ja välilyönnillä erotetun merkkijonon erottimena, saat listan merkkijonoista, joiden alkuun on jätetty välilyönti.

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

Voit käyttää erotinmerkkinä pilkkua + välilyöntiä seuraavasti, mutta se ei toimi, jos alkuperäisen merkkijonon välilyöntien määrä on erilainen.', '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

String-metodia strip(), joka selitetään seuraavaksi, voidaan käyttää kahden välilyönnin käsittelyyn.

strip(): Poista ylimääräiset merkit merkkijonon alusta ja lopusta.

strip() on menetelmä, jolla poistetaan ylimääräiset merkit merkkijonon alusta ja lopusta.

Jos argumentti jätetään pois, palautetaan uusi merkkijono, josta on poistettu välilyönnit. Alkuperäistä merkkijonoa ei muuteta.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

Jos argumenttina on merkkijono, merkkijonon sisältämät merkit poistetaan.

s = '-+-one-+-'
print(s.strip('-+'))
# one

Tässä tapauksessa välilyöntejä ei poisteta. Jos siis haluat poistaa myös välilyönnit, anna argumenttina merkkijono, joka sisältää välilyöntejä, kuten alla näkyy.'-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

strip() käsittelee molemmat päät, mutta myös seuraavat toiminnot ovat käytettävissä.

  • lstrip():Prosessi vasta alussa
  • rstrip():Käsittele vain rivin loppu.

Luettelon ymmärtämisen merkintätapa: funktioiden ja metodien soveltaminen luettelon elementteihin.

Jos haluat soveltaa funktiota tai metodia listan elementteihin, on fiksua käyttää for-silmukan sijasta listan ymmärtämisen merkintätapaa, jos haluat saada listan lopussa.

Tässä sovellamme strip()-toimintoa listaan, joka saadaan jakamalla merkkijono split()-toiminnolla. Pilkulla erotetun merkkijonon, joka sisältää välilyöntejä, ylimääräiset välilyönnit voidaan poistaa luettelon muodostamiseksi.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

Kun tätä sovelletaan tyhjään merkkijonoon, saadaan lista, jonka elementtinä on yksi tyhjä merkkijono.

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

Jos haluat saada tyhjän listan tyhjälle merkkijonolle, voit asettaa ehdollisen haaran listan ymmärtämisen merkintätapaan.

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

'one, , three'
Jos pilkulla erotettu elementti puuttuu, kuten edellä on kuvattu, ensimmäinen menetelmä listaa sen tyhjänä merkkijonoelementtinä.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

Jos haluat jättää puuttuvat osat huomiotta, voit asettaa ehdollisen haaran luettelon ymmärtämisen merkintätapaan.

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

Hae numeroluettelona

Jos haluat saada pilkulla erotetun lukujonon lukujonon sijasta numeroiden luettelona, käytä int()- tai float()-toimintoa muuntaaksesi merkkijonon numeroksi luettelon ymmärrettävyysmerkinnällä.

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(): Luettelon yhdistäminen ja sen saaminen merkkijonona

Päinvastaisessa tapauksessa, jos haluat yhdistää listan ja saada merkkijonoja, jotka on erotettu tietyllä erotinmerkillä, käytä join()-metodia.

Virhe on helppo tehdä, mutta huomaa, että join() on merkkijonometodi, ei listametodi. Lista annetaan argumenttina.

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

Voit kirjoittaa sen yhdelle riville seuraavasti.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

Jos haluat vain vaihtaa kiinteän erottimen, se on helpompi korvata replace()-menetelmällä.

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three