Python, hatiin para hatiin ang comma-separated string, alisin ang whitespace at i-convert sa isang listahan

Negosyo

Kapag hinahati ang isang comma-separated string sa isang listahan sa Python, kung walang mga puwang sa pagitan, split() lang ang gagana. Kung mayroong mga puwang, kapaki-pakinabang na pagsamahin ito sa strip() upang alisin ang mga karagdagang puwang. Bilang karagdagan, ang paggamit ng notasyon sa pag-unawa sa listahan ay isang matalinong paraan ng pagsulat.

Sa seksyong ito, una naming ipaliwanag ang mga sumusunod.

  • Hatiin ang isang string na may tinukoy na delimiter at ibalik ito bilang isang listahansplit()
  • Alisin ang mga karagdagang character mula sa simula at dulo ng isang string.strip()
  • Ilista ang notasyon ng pag-unawa upang ilapat ang mga function at pamamaraan sa listahan ng mga elemento.

Ipinapakita rin nito kung paano gumawa ng listahan ng mga string na pinaghihiwalay ng mga puwang at kuwit sa pamamagitan ng pag-alis ng mga puwang, tulad ng ipinapakita sa ibaba.
one, two, three'

Bilang karagdagan, tatalakayin natin ang mga sumusunod

  • Paano ito makuha bilang isang listahan ng mga numero
  • Paano gamitin ang join() para sumali sa isang listahan at gawin itong string muli

split():Hatiin ang isang string na may tinukoy na delimiter at ibalik ito bilang isang listahan

Gamit ang method split() para sa mga string, maaari mong hatiin ang isang string na may tinukoy na delimiter at makuha ito bilang isang listahan (array). Ang tinukoy na delimiter ay maaaring tukuyin ng sumusunod na argumento.sep

Kung aalisin ang argument sep at walang tinukoy na delimiter, hinahati nito ang string sa pamamagitan ng mga puwang at nagbabalik ng listahan. Hahatiin din ng magkakasunod na mga puwang at tab ang listahan, kaya kung gusto mong gumawa ng listahan ng mga tab-delimited string, maaari mong gamitin ang split() nang walang argumento.

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

Kung ang isang delimiter ay tinukoy sa sep argument, hinahati nito ang listahan sa string na iyon at nagbabalik ng isang listahan.

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

Sa kaso ng string na pinaghihiwalay ng kuwit, kung walang dagdag na puting espasyo, walang problema, ngunit kung magpapatakbo ka ng split() na may kuwit bilang delimiter para sa isang string na pinaghihiwalay ng kuwit + puting espasyo, magtatapos ka may listahan ng mga string na may puting espasyo na natitira sa simula.

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

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

Maaari kang gumamit ng kuwit + puwang bilang delimiter gaya ng mga sumusunod, ngunit hindi ito gagana kung iba ang bilang ng mga puwang sa orihinal na string., '

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

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

Ang string method strip(), na ipapaliwanag sa susunod, ay maaaring gamitin upang harapin ang dalawang puwang.

strip():Alisin ang mga karagdagang character mula sa simula at dulo ng isang string.

ang strip() ay isang paraan upang alisin ang mga karagdagang character mula sa simula at dulo ng isang string.

Kung aalisin ang argumento, ibabalik ang isang bagong string na inalis ang mga character na whitespace. Ang orihinal na string mismo ay hindi nabago.

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

print(s)
#   one  

Kung ang isang string ay tinukoy bilang isang argumento, ang mga character na nakapaloob sa string ay aalisin.

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

Sa kasong ito, hindi inaalis ang mga puwang. Samakatuwid, kung gusto mo ring alisin ang whitespace, ipasa ang isang string kasama ang mga puwang bilang argumento, tulad ng ipinapakita sa ibaba.-+ '

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

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

ang strip() ay humahawak sa magkabilang dulo, ngunit ang mga sumusunod na function ay magagamit din.

  • lstrip():Iproseso lamang ang simula
  • rstrip():Iproseso ang dulo ng linya lamang.

List comprehension notation: ilapat ang mga function at pamamaraan upang ilista ang mga elemento

Kung gusto mong maglapat ng function o paraan sa mga elemento ng isang listahan, matalinong gamitin ang notasyon sa pag-unawa sa listahan sa halip na para sa loop kung gusto mong makuha ang listahan sa dulo.

Dito, inilalapat namin ang strip() sa listahang nakuha sa pamamagitan ng paghahati ng string na may split(). Maaaring alisin ang sobrang whitespace sa isang comma-separated string na naglalaman ng whitespace upang makagawa ng listahan.

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

Kapag ito ay inilapat sa isang walang laman na string, isang listahan na may isang walang laman na string bilang isang elemento ay maaaring makuha.

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

Kung gusto mong makakuha ng walang laman na listahan para sa isang walang laman na string, maaari kang mag-set up ng conditional na sangay sa notasyon ng pag-unawa sa listahan.

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

one, , three'
Gayundin, kung nawawala ang isang elementong pinaghihiwalay ng kuwit, tulad ng inilarawan sa itaas, ililista ito ng unang paraan bilang isang walang laman na elemento ng string.

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

Kung gusto mong balewalain ang mga nawawalang bahagi, maaari kang mag-set up ng conditional na sangay sa notasyon ng pag-unawa sa listahan.

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

Kunin bilang isang listahan ng mga numero

Kung gusto mong makakuha ng string ng mga numero na pinaghihiwalay ng kuwit bilang isang listahan ng mga numero sa halip na isang string, ilapat ang int() o float() upang i-convert ang string sa isang numero sa notasyon ng pang-unawa sa listahan.

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():Pagsamahin ang isang listahan at kunin ito bilang isang string

Sa kabaligtaran na pattern, kung gusto mong sumali sa isang listahan at makakuha ng mga string na pinaghihiwalay ng isang partikular na delimiter, gamitin ang join() na paraan.

Madaling magkamali, ngunit tandaan na ang join() ay isang string method, hindi isang list method. Ang listahan ay tinukoy bilang isang argumento.

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

Maaari mo itong isulat sa isang linya tulad ng sumusunod.

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

Kung gusto mo lang magpalit ng fixed delimiter, mas madaling palitan ito ng replace() method.

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