ปัญหา
คุณต้องแยกสตริงออกเป็นช่องต่างๆ แต่ตัวคั่นไม่สอดคล้องกันตลอดทั้งสตริง
วิธีแก้ปัญหา
มีหลายวิธีที่คุณสามารถแยกสตริงหรือสตริงของตัวคั่นหลายตัวใน python วิธีที่ง่ายที่สุดและง่ายที่สุดคือการใช้วิธี split() อย่างไรก็ตาม มีไว้เพื่อจัดการกับกรณีทั่วไป
re.split() is more flexible than the normal `split()` method in handling complex string scenarios.
ด้วย re.split() คุณสามารถระบุรูปแบบได้หลายรูปแบบสำหรับตัวคั่น ตามที่แสดงในโซลูชัน ตัวคั่นคือ ahyphen(-) หรือ whitespace( ) หรือ comma(,) ตามค่า เอกสารนิพจน์ทั่วไปสามารถพบได้ที่นี่
เมื่อใดก็ตามที่พบรูปแบบนั้น การจับคู่ทั้งหมดจะกลายเป็นตัวคั่นระหว่างฟิลด์ที่อยู่ด้านใดด้านหนึ่งของการแข่งขัน
แยกเฉพาะข้อความระหว่างตัวคั่น (ไม่มีตัวคั่น)
ตัวอย่าง
import re tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray' """" #----------------------------------------------------------------------------- # Scenario 1 - Output the players # Input - String with multiple delimiters ( - , white space) # Code - Specify the delimters in [] #----------------------------------------------------------------------------- """ players = re.split(r'[-,\s]\s*',tennis_greats)
ผลลัพธ์
print(f" The output is - {players}")
ผลลัพธ์คือ -
['Roger', 'federer', 'Rafael', 'nadal', 'Novak', 'Djokovic', 'Andy', 'murray']
แยกข้อความระหว่างตัวคั่นและตัวคั่น
ตัวอย่าง
import re tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray' """" #----------------------------------------------------------------------------- # Scenario 2 - Output the players and the delimiters # Input - String with multiple delimiters ( - , white space) # Code - Specify the delimters between pipe (|) #----------------------------------------------------------------------------- """ players = re.split(r'(-|,|\s)\s*',tennis_greats)
ผลลัพธ์
print(f" The output is -{players}")
ผลลัพธ์คือ -
['Roger', '-', 'federer', ',', 'Rafael', ' ', 'nadal', ',', 'Novak', ' ', 'Djokovic', ',', 'Andy', ' ', 'murray']