Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để chia chuỗi trên nhiều dấu phân cách với Python?

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