Python, belah untuk memisahkan rentetan yang dipisahkan koma, alih keluar ruang putih dan tukar kepada senarai

Perniagaan

Apabila membelah rentetan yang dipisahkan koma ke dalam senarai dalam Python, jika tiada ruang di antaranya, hanya split() akan berfungsi. Jika terdapat ruang, adalah berguna untuk menggabungkannya dengan strip() untuk mengalih keluar ruang tambahan. Selain itu, menggunakan tatatanda pemahaman senarai ialah cara yang bijak untuk menulis.

Dalam bahagian ini, kami mula-mula menerangkan perkara berikut.

  • Pisahkan rentetan dengan pembatas yang ditentukan dan kembalikannya sebagai senaraisplit()
  • Alih keluar aksara tambahan dari permulaan dan penghujung rentetan.strip()
  • Senaraikan tatatanda pemahaman untuk menggunakan fungsi dan kaedah untuk menyenaraikan elemen.

Ia juga menunjukkan cara membuat senarai rentetan yang dipisahkan oleh ruang dan koma dengan mengalih keluar ruang, seperti yang ditunjukkan di bawah.
one, two, three'

Di samping itu, kita akan membincangkan perkara berikut

  • Bagaimana untuk mendapatkannya sebagai senarai nombor
  • Cara menggunakan join() untuk menyertai senarai dan menjadikannya rentetan semula

split():Pisahkan rentetan dengan pembatas yang ditentukan dan kembalikannya sebagai senarai

Menggunakan kaedah split() untuk rentetan, anda boleh memisahkan rentetan dengan pembatas yang ditentukan dan mendapatkannya sebagai senarai (tatasusunan). Pembatas yang ditentukan boleh ditentukan oleh hujah berikut.sep

Jika hujah sep ditinggalkan dan tiada pembatas ditentukan, ia memisahkan rentetan mengikut ruang dan mengembalikan senarai. Ruang dan tab yang berturut-turut juga akan membahagikan senarai, jadi jika anda ingin membuat senarai rentetan yang dibatasi tab, anda boleh menggunakan split() tanpa hujah.

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

Jika pembatas ditentukan dalam hujah sep, ia membahagikan senarai dengan rentetan itu dan mengembalikan senarai.

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

Dalam kes rentetan yang dipisahkan koma, jika tiada ruang putih tambahan, tiada masalah, tetapi jika anda menjalankan split() dengan koma sebagai pembatas untuk rentetan yang dipisahkan dengan koma + ruang putih, anda akan tamat dengan senarai rentetan dengan ruang putih yang ditinggalkan pada permulaan.

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

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

Anda boleh menggunakan koma + ruang sebagai pembatas seperti berikut, tetapi ia tidak akan berfungsi jika bilangan ruang dalam rentetan asal berbeza., '

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

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

Jalur kaedah rentetan(), yang akan diterangkan seterusnya, boleh digunakan untuk menangani dua ruang.

strip():Alih keluar aksara tambahan dari permulaan dan penghujung rentetan.

strip() ialah kaedah untuk mengalih keluar aksara tambahan dari permulaan dan penghujung rentetan.

Jika hujah ditinggalkan, rentetan baharu dikembalikan dengan aksara ruang kosong dialih keluar. Rentetan asal itu sendiri tidak diubah.

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

print(s)
#   one  

Jika rentetan dinyatakan sebagai hujah, aksara yang terkandung dalam rentetan akan dialih keluar.

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

Dalam kes ini, ruang tidak dialih keluar. Oleh itu, jika anda ingin mengalih keluar ruang putih juga, hantar rentetan termasuk ruang sebagai hujah, seperti yang ditunjukkan di bawah.-+ '

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

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

strip() mengendalikan kedua-dua hujung, tetapi fungsi berikut juga tersedia.

  • lstrip():Proses hanya permulaan
  • rstrip():Proses hujung baris sahaja.

Senaraikan tatatanda pemahaman: gunakan fungsi dan kaedah untuk menyenaraikan elemen

Jika anda ingin menggunakan fungsi atau kaedah pada elemen senarai, adalah bijak untuk menggunakan notasi pemahaman senarai dan bukannya gelung for jika anda ingin mendapatkan senarai itu pada akhirnya.

Di sini, kami menggunakan strip() pada senarai yang diperoleh dengan membelah rentetan dengan split(). Ruang putih tambahan dalam rentetan dipisahkan koma yang mengandungi ruang putih boleh dialih keluar untuk membuat senarai.

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

Apabila ini digunakan pada rentetan kosong, senarai dengan rentetan kosong tunggal sebagai elemen boleh diperolehi.

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

Jika anda ingin mendapatkan senarai kosong untuk rentetan kosong, anda boleh menyediakan cawangan bersyarat dalam notasi pemahaman senarai.

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

one, , three'
Selain itu, jika elemen yang dipisahkan koma tiada, seperti yang diterangkan di atas, kaedah pertama akan menyenaraikannya sebagai elemen rentetan kosong.

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

Jika anda ingin mengabaikan bahagian yang hilang, anda boleh menyediakan cawangan bersyarat dalam notasi pemahaman senarai.

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

Dapatkan sebagai senarai nombor

Jika anda ingin mendapatkan rentetan nombor yang dipisahkan koma sebagai senarai nombor dan bukannya rentetan, gunakan int() atau float() untuk menukar rentetan kepada nombor dalam notasi pemahaman senarai.

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():Gabungkan senarai dan dapatkannya sebagai rentetan

Dalam corak yang bertentangan, jika anda ingin menyertai senarai dan mendapatkan rentetan yang dipisahkan oleh pembatas tertentu, gunakan kaedah join().

Adalah mudah untuk membuat kesilapan, tetapi ambil perhatian bahawa join() ialah kaedah rentetan, bukan kaedah senarai. Senarai dinyatakan sebagai hujah.

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

Anda boleh menulisnya dalam satu baris seperti berikut.

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

Jika anda hanya mahu menukar pembatas tetap, lebih mudah untuk menggantikannya dengan kaedah replace().

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