Vấn đề
Bạn cần chia một chuỗi thành các trường, nhưng các dấu phân cách không nhất quán trong suốt chuỗi.
Giải pháp
Có nhiều cách để bạn có thể chia một chuỗi hoặc các chuỗi gồm nhiều dấu phân cách trong python. Cách tiếp cận dễ dàng và phổ biến nhất là sử dụng phương thức split (), tuy nhiên, nó dùng để xử lý các trường hợp đơn giản.
re.split() is more flexible than the normal `split()` method in handling complex string scenarios.
Với re.split (), bạn có thể chỉ định nhiều mẫu cho dấu phân tách. Như được hiển thị trong giải pháp, dấu phân cách là dấu gạch ngang (-), hoặc khoảng trắng () hoặc dấu phẩy (,) theo sau các giá trị. Bạn có thể tìm thấy tài liệu về cụm từ thông dụng tại đây.
Bất cứ khi nào tìm thấy mẫu đó, toàn bộ đối sánh sẽ trở thành dấu phân cách giữa các trường ở hai bên của chúng trùng khớp.
Chỉ trích xuất văn bản giữa các dấu phân cách (không có dấu phân cách).
Ví dụ
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)
đầu ra
print(f" The output is - {players}")
Đầu ra là -
['Roger', 'federer', 'Rafael', 'nadal', 'Novak', 'Djokovic', 'Andy', 'murray']
Trích xuất văn bản giữa các dấu phân cách cùng với các dấu phân cách
Ví dụ
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)
đầu ra
print(f" The output is - {players}")
Đầu ra là -
['Roger', '-', 'federer', ',', 'Rafael', ' ', 'nadal', ',', 'Novak', ' ', 'Djokovic', ',', 'Andy', ' ', 'murray']