Python, skiptu til að kljúfa streng aðskilinn með kommum, fjarlægðu hvítbil og breyttu í lista

Viðskipti

Þegar kommumaðskilinn strengur er skipt í lista í Python, ef engin bil eru á milli, þá virkar bara split(). Ef það eru bil er gagnlegt að sameina það með strip() til að fjarlægja aukabilin. Að auki er það snjöll leið til að skrifa að nota listaskilning.

Í þessum kafla útskýrum við fyrst eftirfarandi.

  • Kljúfu streng með tilgreindum afmörkun og skilaðu honum sem listasplit()
  • Fjarlægðu aukastafi úr upphafi og enda strengs.strip()
  • Listaskilningur til að beita föllum og aðferðum á listaþætti.

Það sýnir einnig hvernig á að búa til lista yfir strengi aðskilda með bilum og kommum með því að fjarlægja bil, eins og sýnt er hér að neðan.
one, two, three'

Að auki munum við ræða eftirfarandi

  • Hvernig á að fá það sem lista yfir tölur
  • Hvernig á að nota join() til að sameina lista og gera hann að streng aftur

split():Kljúfu streng með tilgreindum afmörkun og skilaðu honum sem lista

Með því að nota aðferðina split() fyrir strengi geturðu skipt streng með tilteknu afmarki og fengið hann sem lista (fylki). Hægt er að tilgreina tilgreinda afmörkun með eftirfarandi röksemdafærslu.sep

Ef viðfangsefninu sep er sleppt og engin afmörkun er tilgreind, skiptir það strengnum með bilum og skilar lista. Röð og flipar í röð munu einnig skipta listanum, þannig að ef þú vilt búa til lista yfir flipaafmarkaða strengi geturðu notað split() án rifrildarinnar.

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

Ef afmörkun er tilgreind í sep viðfangsefninu skiptir það listanum með þeim streng og skilar lista.

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

Ef um kommuaðskilinn streng er að ræða, ef það er ekkert auka hvítt bil, þá er ekkert vandamál, en ef þú keyrir split() með kommu sem afmörkun fyrir streng sem er aðskilinn með kommu + hvítu bili, endarðu upp með lista yfir strengi með hvítu bili eftir í upphafi.

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

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

Þú getur notað kommu + bil sem afmörkun á eftirfarandi hátt, en það virkar ekki ef fjöldi bila í upprunalega strengnum er mismunandi., '

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

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

Strengjaaðferðin strip(), sem verður útskýrð næst, er hægt að nota til að takast á við tvö bil.

strip():Fjarlægðu aukastafi úr upphafi og enda strengs.

strip() er aðferð til að fjarlægja aukastafi úr upphafi og enda strengs.

Ef röksemdinni er sleppt er nýr strengur skilaður með hvítum stöfum fjarlægð. Upprunalega strengnum sjálfum er ekki breytt.

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

print(s)
#   one  

Ef strengur er tilgreindur sem viðfangsefni verða stafirnir sem eru í strengnum fjarlægðir.

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

Í þessu tilviki eru bil ekki fjarlægð. Þess vegna, ef þú vilt fjarlægja bil líka skaltu senda streng sem inniheldur bil sem rök, eins og sýnt er hér að neðan.-+ '

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

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

strip() sér um báða endana, en eftirfarandi aðgerðir eru einnig fáanlegar.

  • lstrip():Vinndu aðeins byrjunina
  • rstrip():Vinndu aðeins enda línunnar.

Listaskilningur: Notaðu aðgerðir og aðferðir til að skrá þætti

Ef þú vilt beita falli eða aðferð á þætti lista er snjallt að nota listaskilninginn í stað for lykkjunnar ef þú vilt fá listann á endanum.

Hér notum við strip() á listann sem fæst með því að skipta strengnum með split(). Hægt er að fjarlægja auka bilið í streng aðskilinn með kommum sem inniheldur bil til að búa til lista.

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

Þegar þetta er notað á tóman streng er hægt að fá lista með einum tómum streng sem frumefni.

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

Ef þú vilt fá tóman lista fyrir tóman streng, getur þú sett upp skilyrta grein í listaskilningi.

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

one, , three'
Einnig, ef kommumaðskilið stak vantar, eins og lýst er hér að ofan, mun fyrsta aðferðin skrá það sem tómt strengsatriði.

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

Ef þú vilt hunsa þá hluta sem vantar, getur þú sett upp skilyrta grein í listaskilningi.

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

Fáðu sem lista yfir tölur

Ef þú vilt fá talnastreng sem er aðskilinn með kommum sem lista yfir tölur í stað strengs skaltu nota int() eða float() til að breyta strengnum í tölu í listaskilningi.

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():Sameina lista og fá hann sem streng

Í gagnstæða mynstri, ef þú vilt sameina lista og fá strengi aðskilda með ákveðnu afmörkun, notaðu join() aðferðina.

Það er auðvelt að gera mistök, en athugaðu að join() er strengjaaðferð, ekki listaaðferð. Listinn er tilgreindur sem rök.

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

Þú getur skrifað það í einni línu sem hér segir.

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

Ef þú vilt bara breyta föstum afmörkun er auðveldara að skipta um það með replace() aðferðinni.

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three
Copied title and URL