Tách Python so với tách lại

Tôi luôn ngạc nhiên về cách các biểu thức chính quy tồn tại sau bảy thập kỷ gián đoạn công nghệ. Họ trông giống như 70 năm trước. Điều này có nghĩa là nếu bạn thành thạo các biểu thức chính quy, bạn sẽ xây dựng cho mình một kỹ năng lâu dài và có liên quan cao trong thị trường ngày nay. Bạn sẽ có thể viết một dòng mã mà người khác phải mất hàng tá

Bài viết này là tất cả về phương pháp

re.split[pattern, string, maxsplit=0, flags=0]
9 của Python's re library

Phương thức

re.split[pattern, string, maxsplit=0, flags=0]
9 khớp với tất cả các lần xuất hiện của
re.split[pattern, string, maxsplit=0, flags=0]
1 trong
re.split[pattern, string, maxsplit=0, flags=0]
2 và chia chuỗi dọc theo các kết quả khớp dẫn đến danh sách các chuỗi giữa các kết quả khớp. Ví dụ, kết quả của
re.split[pattern, string, maxsplit=0, flags=0]
3 trong danh sách các chuỗi
re.split[pattern, string, maxsplit=0, flags=0]
4

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

Python Regex Split - Hướng dẫn đầy đủ


Xem video này trên YouTube

làm thế nào lại. split[] Làm việc trong Python?

Phương thức

re.split[pattern, string, maxsplit=0, flags=0]
5 trả về một danh sách các chuỗi bằng cách khớp tất cả các lần xuất hiện của mẫu trong chuỗi và chia chuỗi dọc theo các lần xuất hiện đó.

Đây là một ví dụ tối thiểu

>>> import re
>>> string = 'Learn Python with\t     Finxter!'
>>> re.split['\s+', string]
['Learn', 'Python', 'with', 'Finxter!']

Chuỗi chứa bốn từ được phân tách bằng ký tự khoảng trắng [đặc biệt. khoảng trống

re.split[pattern, string, maxsplit=0, flags=0]
6 và ký tự dạng bảng
re.split[pattern, string, maxsplit=0, flags=0]
7]. Bạn sử dụng biểu thức chính quy
re.split[pattern, string, maxsplit=0, flags=0]
8 để khớp với tất cả các lần xuất hiện của một số dương các khoảng trắng tiếp theo. Các chuỗi con phù hợp đóng vai trò là dấu phân cách. Kết quả là chuỗi được chia dọc theo các dấu phân cách đó

Nhưng đó không phải là tất cả. Chúng ta hãy xem định nghĩa chính thức của phương thức tách

Sự chỉ rõ

re.split[pattern, string, maxsplit=0, flags=0]

Phương thức này có bốn đối số—hai trong số đó là tùy chọn

  • re.split[pattern, string, maxsplit=0, flags=0]
    1 — mẫu biểu thức chính quy bạn muốn sử dụng làm dấu phân cách
  • re.split[pattern, string, maxsplit=0, flags=0]
    2 — văn bản bạn muốn chia thành danh sách các chuỗi
  • re.split[pattern, string, maxsplit=0, flags=0]
    21 [đối số tùy chọn] — số lượng thao tác phân tách tối đa [= kích thước của danh sách được trả về]. Theo mặc định, đối số
    re.split[pattern, string, maxsplit=0, flags=0]
    21 là 0, có nghĩa là nó bị bỏ qua
  • re.split[pattern, string, maxsplit=0, flags=0]
    23 [đối số tùy chọn] — một công cụ sửa đổi nâng cao hơn cho phép bạn tùy chỉnh hành vi của hàm. Theo mặc định, mô-đun regex không xem xét bất kỳ cờ nào. Bạn muốn biết cách sử dụng những lá cờ đó?

Đối số thứ nhất và thứ hai là bắt buộc. Đối số thứ ba và thứ tư là tùy chọn. Bạn sẽ tìm hiểu chi tiết hơn về những lập luận đó sau

Giá trị trả về. Phương thức phân tách biểu thức chính quy trả về một danh sách các chuỗi con thu được bằng cách sử dụng biểu thức chính quy làm dấu phân cách

💡 Thông tin. Phương thức

re.split[pattern, string, maxsplit=0, flags=0]
24 được sử dụng trong thực tế để thực hiện các thao tác tách chuỗi phức tạp, chẳng hạn như tách chuỗi theo Chữ hoa. Điều này không thể thực hiện dễ dàng bằng cách sử dụng chức năng cơ bản của
re.split[pattern, string, maxsplit=0, flags=0]
25

Regex Split ví dụ tối thiểu

Hãy nghiên cứu thêm một số ví dụ—từ đơn giản đến phức tạp hơn

Cách sử dụng đơn giản nhất là chỉ với hai đối số. regex dấu phân cách và chuỗi được tách

re.split[pattern, string, maxsplit=0, flags=0]
2

Bạn sử dụng một số lượng tùy ý các ký tự

re.split[pattern, string, maxsplit=0, flags=0]
26 hoặc
re.split[pattern, string, maxsplit=0, flags=0]
27 làm dấu phân cách biểu thức chính quy. Làm thế nào để bạn thực hiện điều này? .
re.split[pattern, string, maxsplit=0, flags=0]
20. Các chuỗi ở giữa được thêm vào danh sách trả về

bài viết liên quan. Python Regex Superpower – Hướng dẫn cơ bản

Làm cách nào để sử dụng Đối số maxsplit?

Điều gì sẽ xảy ra nếu bạn không muốn tách toàn bộ chuỗi mà chỉ chia một số lần giới hạn. Đây là một ví dụ

re.split[pattern, string, maxsplit=0, flags=0]
2

Chúng tôi sử dụng regex dấu phân cách đơn giản

re.split[pattern, string, maxsplit=0, flags=0]
21 để chia chuỗi thành các chuỗi con. Trong cuộc gọi phương thức đầu tiên, chúng tôi đặt
re.split[pattern, string, maxsplit=0, flags=0]
22 để có được sáu phần tử danh sách. Trong cuộc gọi phương thức thứ hai, chúng tôi đặt
re.split[pattern, string, maxsplit=0, flags=0]
23 để có được ba phần tử danh sách. Bạn có thể nhìn thấy các mô hình?

Bạn cũng có thể sử dụng đối số vị trí để lưu một số ký tự

re.split[pattern, string, maxsplit=0, flags=0]
7

Nhưng vì nhiều lập trình viên không biết về đối số

re.split[pattern, string, maxsplit=0, flags=0]
21, có lẽ bạn nên sử dụng đối số từ khóa để dễ đọc

Làm cách nào để sử dụng đối số cờ tùy chọn?

Như bạn đã thấy trong đặc tả, phương thức

re.split[pattern, string, maxsplit=0, flags=0]
24 đi kèm với đối số thứ tư tùy chọn là
re.split[pattern, string, maxsplit=0, flags=0]
26

re.split[pattern, string, maxsplit=0, flags=0]

Mục đích của đối số flags là gì?

Cờ cho phép bạn kiểm soát công cụ biểu thức chính quy. Bởi vì biểu thức chính quy rất mạnh nên chúng là một cách hữu ích để bật và tắt một số tính năng nhất định [ví dụ: có nên bỏ qua cách viết hoa khi đối sánh biểu thức chính quy của bạn hay không]

Cú phápÝ nghĩa. ASCIINếu bạn không sử dụng cờ này, các ký hiệu biểu thức chính Python đặc biệt w, W, b, B, d, D, s và S sẽ khớp với các ký tự Unicode. Nếu bạn sử dụng cờ này, những ký hiệu đặc biệt đó sẽ chỉ khớp với các ký tự ASCII — như tên gợi ý. lại. Tương tự như lại. ASCIIre. GỠ LỖI Nếu bạn sử dụng cờ này, Python sẽ in một số thông tin hữu ích vào trình bao để giúp bạn gỡ lỗi biểu thức chính quy của mình. lại. IGNORECASENếu bạn sử dụng cờ này, công cụ regex sẽ thực hiện khớp không phân biệt chữ hoa chữ thường. Vì vậy, nếu bạn đang tìm kiếm [A-Z], nó cũng sẽ khớp với [a-z]. lại. Giống như lại. BỎ QUA. ĐỊA PHƯƠNGKhông sử dụng cờ này — không bao giờ. Nó không được dùng nữa—ý tưởng là thực hiện so khớp không phân biệt chữ hoa chữ thường tùy thuộc vào ngôn ngữ hiện tại của bạn. Nhưng nó không đáng tin cậy. lại. Giống như lại. ĐỊA PHƯƠNGre. MULTILINECờ này bật tính năng sau. biểu thức chính quy bắt đầu chuỗi '^' khớp ở đầu mỗi dòng [thay vì chỉ ở đầu chuỗi]. Điều tương tự cũng xảy ra đối với biểu thức chính quy cuối chuỗi '$' hiện cũng khớp ở cuối mỗi dòng trong một chuỗi nhiều dòng. lại. Tương tự như lại. MULTILINEre. DOTALLKhông sử dụng cờ này, dấu chấm regex ‘. ' khớp với tất cả các ký tự ngoại trừ ký tự xuống dòng 'n'. Bật cờ này để thực sự khớp với tất cả các ký tự kể cả ký tự xuống dòng. lại. Tương tự như lại. dotallre. ĐỘNG TỪĐể cải thiện khả năng đọc của các biểu thức chính quy phức tạp, bạn có thể muốn cho phép nhận xét và định dạng [nhiều dòng] của chính biểu thức chính quy. Điều này là có thể với cờ này. tất cả các ký tự khoảng trắng và các dòng bắt đầu bằng ký tự '#' đều bị bỏ qua trong biểu thức chính quy. lại. XSGiống như lại. RÕ RÀNG

Đây là cách bạn sử dụng nó trong một ví dụ thực tế

re.split[pattern, string, maxsplit=0, flags=0]
2

Mặc dù regex của bạn là chữ thường, chúng tôi bỏ qua cách viết hoa bằng cách sử dụng cờ re. Tôi là viết tắt của re. BỎ QUA TRƯỜNG HỢP. Nếu chúng ta không làm điều đó, kết quả sẽ hoàn toàn khác

re.split[pattern, string, maxsplit=0, flags=0]
3

Vì lớp ký tự [xy] chỉ chứa các ký tự viết thường 'x' và 'y', các biến thể chữ hoa của chúng xuất hiện trong danh sách được trả về thay vì được sử dụng làm dấu phân cách

Đâu là sự khác biệt giữa re. split[] và chuỗi. split[] trong Python?

Phương pháp

re.split[pattern, string, maxsplit=0, flags=0]
24 mạnh hơn nhiều. Phương thức
re.split[pattern, string, maxsplit=0, flags=0]
9 có thể tách một chuỗi dọc theo tất cả các lần xuất hiện của một mẫu phù hợp. Mẫu có thể phức tạp tùy ý. Điều này trái ngược với phương pháp
re.split[pattern, string, maxsplit=0, flags=0]
29 cũng chia một chuỗi thành các chuỗi con dọc theo dấu phân cách. Tuy nhiên, dấu phân cách phải là một chuỗi bình thường

Một ví dụ mà phương pháp

re.split[pattern, string, maxsplit=0, flags=0]
24 mạnh mẽ hơn vượt trội hơn là tách văn bản dọc theo bất kỳ ký tự khoảng trắng nào

re.split[pattern, string, maxsplit=0, flags=0]
7

Phương thức

re.split[pattern, string, maxsplit=0, flags=0]
24 chia chuỗi dọc theo bất kỳ số ký tự khoảng trắng dương nào. Bạn không thể đạt được kết quả như vậy với
re.split[pattern, string, maxsplit=0, flags=0]
29 vì dấu phân cách phải là một chuỗi có kích thước không đổi

Phương pháp Re liên quan

Có năm phương thức biểu thức chính quy quan trọng mà bạn nên nắm vững

  • Phương thức
    re.split[pattern, string, maxsplit=0, flags=0]
    73 trả về một danh sách các chuỗi khớp. Đọc thêm trong hướng dẫn blog của chúng tôi
  • Phương thức
    re.split[pattern, string, maxsplit=0, flags=0]
    74 trả về một đối tượng so khớp của trận đấu đầu tiên. Đọc thêm trong hướng dẫn blog của chúng tôi
  • Phương thức
    re.split[pattern, string, maxsplit=0, flags=0]
    75 trả về một đối tượng khớp nếu biểu thức chính quy khớp ở đầu chuỗi. Đọc thêm trong hướng dẫn blog của chúng tôi
  • Phương thức
    re.split[pattern, string, maxsplit=0, flags=0]
    76 trả về một đối tượng khớp nếu biểu thức chính quy khớp với toàn bộ chuỗi. Đọc thêm trong hướng dẫn blog của chúng tôi
  • Phương thức
    re.split[pattern, string, maxsplit=0, flags=0]
    77 chuẩn bị mẫu biểu thức chính quy—và trả về một đối tượng biểu thức chính quy mà bạn có thể sử dụng nhiều lần trong mã của mình. Đọc thêm trong hướng dẫn blog của chúng tôi
  • Phương thức
    re.split[pattern, string, maxsplit=0, flags=0]
    9 trả về một danh sách các chuỗi bằng cách so khớp tất cả các lần xuất hiện của mẫu trong chuỗi và chia chuỗi theo các lần xuất hiện đó. Đọc thêm trong hướng dẫn blog của chúng tôi
  • Phương thức
    re.split[pattern, string, maxsplit=0, flags=0]
    79 trả về một chuỗi mới trong đó tất cả các lần xuất hiện của mẫu trong chuỗi cũ được thay thế bằng
    re.split[pattern, string, maxsplit=0, flags=0]
    0. Đọc thêm trong hướng dẫn blog của chúng tôi

Năm phương thức này là 80% những gì bạn cần biết để bắt đầu với chức năng biểu thức chính quy của Python

Video liên quan

Python One-Liners. biểu thức chính quy. Regex để khớp số tiền đô la với xu tùy chọn


Xem video này trên YouTube

Đi đâu từ đây?

Bạn đã tìm hiểu về phương pháp

re.split[pattern, string, maxsplit=0, flags=0]
9 chia
re.split[pattern, string, maxsplit=0, flags=0]
2 dọc theo các lần xuất hiện của
re.split[pattern, string, maxsplit=0, flags=0]
1 phù hợp và trả về một danh sách các chuỗi con

Học Python khó. Nhưng nếu bạn gian lận, nó không khó như nó phải thế

Tải xuống 8 Bảng cheat Python miễn phí ngay bây giờ

Chris

Trong khi làm việc với tư cách là nhà nghiên cứu về các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

chia lại [] trong Python là gì?

Lại. hàm split[] tách chuỗi đã cho theo sự xuất hiện của một ký tự hoặc mẫu cụ thể . Khi tìm thấy mẫu, hàm này trả về các ký tự còn lại từ chuỗi trong danh sách.

Việc phân chia có nhanh hơn regex không?

Cái nào sẽ hoạt động nhanh hơn, nó rất chủ quan. Regex sẽ hoạt động nhanh hơn khi thực thi, tuy nhiên thời gian biên dịch và thiết lập của Regex sẽ nhiều hơn khi tạo phiên bản. Nhưng nếu bạn luôn sẵn sàng đối tượng biểu thức chính quy ngay từ đầu, thì việc sử dụng lại biểu thức chính quy đó để thực hiện phân tách sẽ nhanh hơn . Chuỗi.

Có sự khác biệt nào giữa re match[] và re search[] trong mô-đun Python re không?

Trăn. lại. tìm kiếm [] so với lại. Có sự khác biệt giữa việc sử dụng cả hai chức năng. Cả hai đều trả về kết quả khớp đầu tiên của một chuỗi con được tìm thấy trong chuỗi, nhưng re. match[] chỉ tìm kiếm từ đầu chuỗi và trả về đối tượng khớp nếu tìm thấy .

Split[] có thể lấy hai đối số không?

phương thức split[] chấp nhận hai đối số . Đối số tùy chọn đầu tiên là dấu tách, chỉ định loại dấu tách sẽ sử dụng để tách chuỗi. Nếu đối số này không được cung cấp, thì giá trị mặc định là bất kỳ khoảng trắng nào, nghĩa là chuỗi sẽ tách ra bất cứ khi nào.

Chủ Đề