เมื่อแยกสตริงที่คั่นด้วยเครื่องหมายจุลภาคเป็นรายการใน 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 หากคุณต้องการรับรายการในตอนท้าย
- บทความที่เกี่ยวข้อง:การใช้สัญกรณ์ความเข้าใจรายการ Python
ที่นี่เราใช้ 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