Python แยกเพื่อแยกสตริงที่คั่นด้วยเครื่องหมายจุลภาค ลบช่องว่างและแปลงเป็นรายการ

ธุรกิจ

เมื่อแยกสตริงที่คั่นด้วยเครื่องหมายจุลภาคเป็นรายการใน Python หากไม่มีช่องว่าง ให้แยกเฉพาะ split() เท่านั้น หากมีช่องว่าง จะเป็นประโยชน์ที่จะรวมเข้ากับแถบ () เพื่อลบช่องว่างเพิ่มเติม นอกจากนี้ การใช้สัญกรณ์ความเข้าใจรายการเป็นวิธีที่ชาญฉลาดในการเขียน

ในส่วนนี้ ก่อนอื่นเราจะอธิบายสิ่งต่อไปนี้

  • แยกสตริงด้วยตัวคั่นที่ระบุและส่งคืนเป็นรายการsplit()
  • ลบอักขระพิเศษออกจากจุดเริ่มต้นและจุดสิ้นสุดของสตริงstrip()
  • แสดงรายการสัญกรณ์ความเข้าใจเพื่อใช้ฟังก์ชันและเมธอดกับรายการองค์ประกอบ

นอกจากนี้ยังแสดงวิธีการสร้างรายการสตริงที่คั่นด้วยช่องว่างและเครื่องหมายจุลภาคด้วยการเอาช่องว่างออกดังที่แสดงด้านล่าง
one, two, three'

นอกจากนี้ เราจะพูดถึงเรื่องต่อไปนี้

  • วิธีรับเป็นรายการตัวเลข
  • วิธีใช้ join() เพื่อเข้าร่วมรายการและทำให้เป็นสตริงอีกครั้ง

split():แยกสตริงด้วยตัวคั่นที่ระบุและส่งคืนเป็นรายการ

เมื่อใช้เมธอด split() สำหรับสตริง คุณสามารถแยกสตริงด้วยตัวคั่นที่ระบุและรับเป็นรายการ (อาร์เรย์) ตัวคั่นที่ระบุสามารถระบุได้โดยอาร์กิวเมนต์ต่อไปนี้sep

หากละเว้นอาร์กิวเมนต์ sep และไม่ได้ระบุตัวคั่น สตริงจะแยกสตริงด้วยช่องว่างและส่งคืนรายการ ช่องว่างและแท็บต่อเนื่องกันจะแยกรายการด้วย ดังนั้นหากคุณต้องการสร้างรายการสตริงที่คั่นด้วยแท็บ คุณสามารถใช้ split() โดยไม่ต้องมีอาร์กิวเมนต์

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

หากมีการระบุตัวคั่นในอาร์กิวเมนต์ sep ตัวคั่นจะแบ่งรายการตามสตริงนั้นและส่งคืนรายการ

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

ในกรณีของสตริงที่คั่นด้วยเครื่องหมายจุลภาค หากไม่มีช่องว่างเพิ่มเติม ก็ไม่มีปัญหา แต่ถ้าคุณเรียกใช้ split() โดยใช้เครื่องหมายจุลภาคเป็นตัวคั่นสำหรับสตริงที่คั่นด้วยเครื่องหมายจุลภาค + พื้นที่สีขาว คุณจะสิ้นสุด ขึ้นกับรายการสตริงที่มีช่องว่างสีขาวที่จุดเริ่มต้น

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, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

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

string method strip() ซึ่งจะอธิบายต่อไป สามารถใช้จัดการกับช่องว่างสองช่องได้

strip():ลบอักขระพิเศษออกจากจุดเริ่มต้นและจุดสิ้นสุดของสตริง

strip() เป็นวิธีการลบอักขระพิเศษออกจากจุดเริ่มต้นและจุดสิ้นสุดของสตริง

หากละเว้นอาร์กิวเมนต์ สตริงใหม่จะถูกส่งกลับโดยลบอักขระช่องว่าง สตริงเดิมเองจะไม่เปลี่ยนแปลง

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

print(s)
#   one  

หากระบุสตริงเป็นอาร์กิวเมนต์ อักขระที่อยู่ในสตริงจะถูกลบออก

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

ในกรณีนี้ ช่องว่างจะไม่ถูกลบออก ดังนั้น หากคุณต้องการลบช่องว่างด้วย ให้ส่งสตริงที่มีช่องว่างเป็นอาร์กิวเมนต์ดังที่แสดงด้านล่าง-+ '

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

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

strip() จัดการปลายทั้งสองข้าง แต่มีฟังก์ชันต่อไปนี้ด้วย

  • lstrip():ดำเนินการเฉพาะจุดเริ่มต้น
  • rstrip():ดำเนินการต่อท้ายบรรทัดเท่านั้น

แสดงรายการสัญกรณ์ความเข้าใจ: ใช้ฟังก์ชันและเมธอดเพื่อแสดงรายการองค์ประกอบ

หากคุณต้องการใช้ฟังก์ชันหรือเมธอดกับองค์ประกอบของรายการ ควรใช้สัญกรณ์ความเข้าใจรายการแทนลูป for หากคุณต้องการรับรายการในตอนท้าย

ที่นี่เราใช้ strip() กับรายการที่ได้จากการแยกสตริงด้วย split() สามารถลบช่องว่างเพิ่มเติมในสตริงที่คั่นด้วยเครื่องหมายจุลภาคที่มีช่องว่างเพื่อสร้างรายการได้

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

เมื่อสิ่งนี้ถูกนำไปใช้กับสตริงว่าง สามารถรับรายการที่มีสตริงว่างเดียวเป็นองค์ประกอบได้

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

หากคุณต้องการรับรายการว่างสำหรับสตริงว่าง คุณสามารถตั้งค่าสาขาตามเงื่อนไขในสัญกรณ์ความเข้าใจรายการ

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

one, , three'
นอกจากนี้ หากองค์ประกอบที่คั่นด้วยเครื่องหมายจุลภาคหายไป ตามที่อธิบายไว้ข้างต้น เมธอดแรกจะแสดงองค์ประกอบนั้นเป็นองค์ประกอบสตริงว่าง

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

หากคุณต้องการละเว้นส่วนที่ขาดหายไป คุณสามารถตั้งค่าสาขาตามเงื่อนไขในสัญกรณ์ความเข้าใจรายการ

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

รับเป็นรายการตัวเลข

หากคุณต้องการรับสตริงตัวเลขที่คั่นด้วยเครื่องหมายจุลภาคเป็นรายการตัวเลขแทนที่จะเป็นสตริง ให้ใช้ int() หรือ float() เพื่อแปลงสตริงเป็นตัวเลขในสัญกรณ์ความเข้าใจรายการ

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():รวมรายการและรับเป็นสตริง

ในรูปแบบตรงกันข้าม หากคุณต้องการเข้าร่วมรายการและรับสตริงที่คั่นด้วยตัวคั่นเฉพาะ ให้ใช้เมธอด join()

มันง่ายที่จะทำผิดพลาด แต่โปรดทราบว่า join() เป็นเมธอดสตริง ไม่ใช่เมธอดรายการ รายการถูกระบุเป็นอาร์กิวเมนต์

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

คุณสามารถเขียนได้ในหนึ่งบรรทัดดังนี้

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

หากคุณต้องการเปลี่ยนตัวคั่นคงที่ ให้แทนที่ด้วยวิธีการแทนที่ () ได้ง่ายขึ้น

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