Cách kiểm tra nhiều ký tự trong chuỗi python

Tóm lược. Cách hiệu quả nhất để tách một chuỗi bằng nhiều ký tự là sử dụng thư viện regex của Python là

# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
8. Một giải pháp thay thế là thay thế các dấu phân cách trong chuỗi đã cho bằng ký tự khoảng trắng rồi tách chuỗi

Ví dụ tối thiểu

import re

text = "abc!lmn pqr xyz@mno"
# Method 1
res = re.split["\W+", text]
print[res]
# OUTPUT: ['abc', 'lmn', 'pqr', 'xyz', 'mno']


# Method 2
text = "one1two2three"
print[re.split["[ 1| 2]", text]]
# OUTPUT: ['one', 'two', 'three']

# Method 3
for i in text:
    if i in ['1', '2']:
        text = text.replace[i, ' ']
print[text.split[]]
# OUTPUT: ['one', 'two', 'three']

Xây dựng vấn đề

📜Vấn đề. Cho một chuỗi. Bạn sẽ chia chuỗi bằng cách sử dụng nhiều ký tự/dấu phân cách như thế nào?

Bạn có thể đã tạo danh sách các chuỗi phân tách bằng cách sử dụng dấu phân cách đã cho. Nhưng khi tách chuỗi có nhiều dấu phân cách thì có thể hơi rắc rối và phức tạp

ví dụ

Hãy cùng xem xét một vài ví dụ yêu cầu bạn tách một chuỗi đã cho khi xuất hiện nhiều dấu phân cách

ví dụ 1. Tách chuỗi bằng nhiều dấu tách không phải chữ và số

# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']

ví dụ 2. Tách chuỗi bằng nhiều ký tự [chữ và số]

# Input
text = "abcZlmnDpqrsghu@jil.org"
sep = ['Z', 'D', 's', '@', '.']
# Output
['abc', 'lmn', 'pqr', 'ghu', 'jil', 'org']

Vì vậy, chúng tôi có hai trường hợp khác nhau – [1] Dấu phân cách không phải là chữ và số, [2] Dấu phân cách là sự pha trộn hỗn hợp của ký tự chữ và số và ký tự không phải chữ và số

Có nhiều cách giải bài toán đã cho. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy đi sâu vào các giải pháp

Phương pháp 1. Sử dụng Regex

Cách tốt nhất để xử lý nhiều dấu phân cách là sử dụng tính linh hoạt của thư viện biểu thức chính quy. Có các hàm khác nhau có sẵn trong thư viện regex mà bạn có thể sử dụng để tách chuỗi đã cho. Hãy đi qua từng cái một

Sử dụng lại. tách ra

Phương thức 

# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
9 khớp tất cả các lần xuất hiện của 
# Input
text = "abcZlmnDpqrsghu@jil.org"
sep = ['Z', 'D', 's', '@', '.']
# Output
['abc', 'lmn', 'pqr', 'ghu', 'jil', 'org']
0 trong 
# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
0 và chia chuỗi dọc theo các kết quả phù hợp, dẫn đến danh sách các chuỗi giữa các kết quả phù hợp. Ví dụ: 
# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
1 kết quả trong danh sách chuỗi 
# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
2

🌎Đề nghị đọc. Tách Regex trong Python

Mã số

import re

# Solution to Example 1
text = "Welcome!Finxter-Master the art@Python"
res = re.split["\W+", text]
print[res]
# OUTPUT: ['Welcome', 'Finxter3', 'Master', 'the', 'art', 'Python']


# Solution to Example 2
text = "abcZlmnDpqrsghu@jil.org"
sep = ['Z', 'D', 's', '@', '.']
res = re.split["[ Z | D | s | @ | .]", text]
print[res]
# OUTPUT: ['abc', 'lmn', 'pqr', 'ghu', 'jil', 'org']

Giải trình

  • Để tách chuỗi bằng nhiều ký tự không phải chữ và số, hãy sử dụng
    # Input
    text = "Welcome!Finxter-Master the art@Python"
    sep = ['!', '', '-', ' ', '@']
    # Output
    ['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
    3 trong đó
    # Input
    text = "Welcome!Finxter-Master the art@Python"
    sep = ['!', '', '-', ' ', '@']
    # Output
    ['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
    4 là mẫu phù hợp và đại diện cho một chuỗi đặc biệt sẽ trả về kết quả khớp khi không tìm thấy bất kỳ ký tự từ nào trong chuỗi đã cho. Do đó, bất cứ khi nào tập lệnh tìm thấy bất kỳ ký tự nào không phải là chữ và số, nó sẽ tách chuỗi
  • Để tách chuỗi bằng dấu tách chữ và số, hãy sử dụng một trong hai hoặc [. ] siêu ký tự trong chuỗi của bạn. Nó cho phép bạn chỉ định từng dấu phân cách trong biểu thức như vậy.
    # Input
    text = "Welcome!Finxter-Master the art@Python"
    sep = ['!', '', '-', ' ', '@']
    # Output
    ['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
    5. Do đó, bất cứ khi nào tập lệnh gặp bất kỳ ký tự nào được đề cập trong mẫu, nó sẽ tách chuỗi đã cho

Sử dụng lại. tìm tất cả

Phương thức 

# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
6 quét 
# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
0 từ trái sang phải, tìm kiếm tất cả các kết quả khớp không trùng lặp của 
# Input
text = "abcZlmnDpqrsghu@jil.org"
sep = ['Z', 'D', 's', '@', '.']
# Output
['abc', 'lmn', 'pqr', 'ghu', 'jil', 'org']
0. Nó trả về một danh sách các chuỗi theo thứ tự phù hợp khi quét chuỗi từ trái sang phải

🌎Đề nghị đọc. con trăn lại. findall[] – Mọi thứ bạn cần biết

Mã số

# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
2

Giải trình

  • Trong biểu thức đầu tiên, tôi. e. ,
    # Input
    text = "Welcome!Finxter-Master the art@Python"
    sep = ['!', '', '-', ' ', '@']
    # Output
    ['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
    9, tất cả các lần xuất hiện của ký tự chữ và số đều được tìm thấy và lưu trữ trong danh sách. Ở đây,
    # Input
    text = "abcZlmnDpqrsghu@jil.org"
    sep = ['Z', 'D', 's', '@', '.']
    # Output
    ['abc', 'lmn', 'pqr', 'ghu', 'jil', 'org']
    0 trả về kết quả khớp bất cứ khi nào chuỗi chứa một hoặc nhiều lần xuất hiện ký tự chữ và số [ký tự từ a đến Z, chữ số từ 0-9 và ký tự gạch dưới _]
  • Trong biểu thức thứ hai, tôi. e. ,
    # Input
    text = "abcZlmnDpqrsghu@jil.org"
    sep = ['Z', 'D', 's', '@', '.']
    # Output
    ['abc', 'lmn', 'pqr', 'ghu', 'jil', 'org']
    1, tất cả các lần xuất hiện của các ký tự được nhóm lại với nhau ngoại trừ các ký tự phân cách. Hãy phá vỡ mô hình được sử dụng để hiểu điều này. []+ biểu thị rằng tất cả các lần xuất hiện của một hoặc nhiều ký tự ngoại trừ [được cho bởi ^] ‘Z’, ‘D’, ‘s’, ‘@’ và ‘. ' sẽ được trả lại. Do đó, bất cứ khi nào tập lệnh tìm và nhóm tất cả các ký tự cho đến khi tìm thấy bất kỳ ký tự nào được đề cập trong dấu ngoặc vuông. Ngay khi tìm thấy một trong các ký tự được đề cập, nó sẽ tách chuỗi và tìm nhóm ký tự tiếp theo

Bạn có muốn làm chủ siêu năng lực regex không? . [1] nghiên cứu một chương sách, [2] giải câu đố mật mã và [3] xem video về chương giáo dục

Phương pháp 2. Sử dụng thay thế[] và tách[]

Đây có thể không phải là giải pháp hiệu quả nhất, nhưng hãy nhớ rằng không phải tất cả chúng ta đều thích regex, bạn có thể sử dụng giải pháp này

Tiếp cận. Ý tưởng ở đây là thay thế tất cả các dấu phân cách đã cho có trong chuỗi bằng một ký tự khoảng trắng thông thường và sau đó tách chuỗi đã sửa đổi để lấy danh sách các chuỗi con đã tách

Mã số

# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
6

đầu ra

# Input
text = "Welcome!Finxter-Master the art@Python"
sep = ['!', '', '-', ' ', '@']
# Output
['Welcome', 'Finxter', 'Master', 'the', 'art', 'Python']
7

📚Thông báo độc giả.
[1] Tách chuỗi Python[]
[2] Thay thế chuỗi Python[]

Phần kết luận

Chúng tôi đã giải quyết thành công vấn đề đã cho bằng các cách tiếp cận khác nhau. Tôi hy vọng bài viết này đã giúp bạn trong hành trình viết mã Python của mình. Vui lòng đăng ký và theo dõi để biết thêm các bài viết thú vị

Python hạnh phúc. 🐍

Khóa học Python Regex

Các kỹ sư của Google là những bậc thầy về biểu thức chính quy. Công cụ tìm kiếm Google là một công cụ xử lý văn bản khổng lồ trích xuất giá trị từ hàng nghìn tỷ trang web.   

Các kỹ sư của Facebook là những bậc thầy về biểu thức chính quy. Các mạng xã hội như Facebook, WhatsApp và Instagram kết nối con người qua tin nhắn văn bản.  

Các kỹ sư của Amazon là những bậc thầy về biểu thức chính quy. Gã khổng lồ thương mại điện tử vận ​​chuyển sản phẩm dựa trên mô tả sản phẩm bằng văn bản. Biểu thức chính quy thống trị trò chơi khi xử lý văn bản đáp ứng khoa học máy tính.  

Nếu bạn cũng muốn trở thành bậc thầy về biểu thức chính quy, hãy xem khóa học Python regex toàn diện nhất hành tinh

Shubham Sayon

Tôi là một người tạo nội dung và Blogger Python chuyên nghiệp. Tôi đã xuất bản nhiều bài báo và tạo các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc với tư cách là một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Networking

Chủ Đề