Python tách chuỗi trên nhiều dấu phân cách mà không cần regex

Trong khi viết mã hoặc ứng biến kỹ năng lập trình của mình, chắc chắn bạn đã gặp phải nhiều tình huống mà bạn muốn sử dụng. split[] trong Python không chỉ tách một ký tự mà nhiều ký tự cùng một lúc.  

Thí dụ

"GeeksforGeeks, is an-awesome! website"

sử dụng. split[] ở trên sẽ dẫn đến

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']

trong khi kết quả mong muốn phải là

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']

Trong bài viết này, chúng ta sẽ xem xét một số cách mà chúng ta có thể đạt được điều tương tự

Phương pháp 1. Tách nhiều ký tự khỏi chuỗi bằng re. tách ra[]

Đây là phương pháp hiệu quả nhất và thường được sử dụng để tách nhiều ký tự cùng một lúc. Nó sử dụng regex [biểu thức chính quy] để làm điều này.  

Python3




['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
8
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
9

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
1
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
1

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
2

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
3_______14
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
5
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
6
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
7

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
8

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
9

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
0
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
2____23
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
4

 

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
5

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
3____14
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
8
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
6
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
30
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
31

đầu ra

Chuỗi ban đầu là. GeekforGeeks, is_an-awesome. website Danh sách sau khi thực hiện chức năng tách. [‘GeeksforGeeks’, ‘là’, ‘an’, ‘tuyệt vời ‘, ‘ trang web’]

dòng lại. tách ra[',. _. -. ’, data] yêu cầu Python phân chia biến dữ liệu trên các ký tự. , hoặc _ hoặc – hoặc. Biểu tượng ". ” đại diện hoặc. Có một số biểu tượng trong biểu thức chính quy được coi là biểu tượng đặc biệt và có các chức năng khác nhau. Nếu bạn muốn tách một biểu tượng như vậy, bạn cần thoát nó bằng cách sử dụng “\“[dấu gạch chéo ngược]. Danh sách các ký tự đặc biệt cần được thoát trước khi sử dụng chúng

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
3

Thí dụ.  

Python3




['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
8
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
9

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
34
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
36

 

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
37

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
3____239____320
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
21

đầu ra

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
2

Ghi chú. Để biết thêm về regex bấm vào đây

Phương pháp 2. Tách nhiều ký tự từ một chuỗi bằng re. tìm tất cả []

Đây là hình thức phức tạp hơn một chút nhưng tiết kiệm thời gian. Nó cũng sử dụng regex như trên nhưng thay vì. split[], nó sử dụng một phương thức gọi là. tìm tất cả []. Phương thức này tìm tất cả các trường hợp phù hợp và trả về từng trường hợp trong danh sách. Cách tách này được sử dụng tốt nhất khi bạn không biết chính xác các ký tự mà bạn muốn tách.  

Python3




['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
8
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
9

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
1
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
27

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
2

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
3_______14
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
5
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
6
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
7

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
34

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
9

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
0
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
38
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
39
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
4

 

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
5

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
3____14
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
8
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
6
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
30
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
31

đầu ra

Chuỗi ban đầu là. Đây, là - khác. thí dụ?. Danh sách sau khi thực hiện chức năng tách. [‘Cái này’, ‘là’, ‘cái khác’, ‘ví dụ’]

Ở đây, từ khóa [\w’]+ chỉ ra rằng nó sẽ tìm tất cả các trường hợp của bảng chữ cái hoặc dấu gạch dưới [_] một hoặc nhiều và trả lại chúng trong một danh sách. Ghi chú. [\w’]+ sẽ không phân chia theo dấu gạch dưới [_] khi nó tìm kiếm bảng chữ cái cũng như dấu gạch dưới.  

Thí dụ.  

Python3




['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
8
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
9

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
90
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
92

_______13____794____439

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
96

đầu ra

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
3

Tách nhiều ký tự từ một chuỗi bằng cách sử dụng replace[] và split[]

Đây là một cách rất mới để thực hiện phân chia. Nó không sử dụng regex và không hiệu quả nhưng vẫn đáng thử. Nếu bạn biết các ký tự bạn muốn tách, chỉ cần thay thế chúng bằng khoảng trắng rồi sử dụng. tách ra[].  

Python3




['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
97

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
1
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
0
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
00

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
2

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
3_______14
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
5
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
6
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
7

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
07

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
9

['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
0_______10
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
11
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
12
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
13
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
14
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
15
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
16
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
13
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
14
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
19

 

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
00

['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
3____14
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
8
['GeeksforGeeks, ', 'is', 'an-awesome!', 'website']
6
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
30
['GeeksforGeeks', 'is', 'an', 'awesome', 'website']
31

đầu ra

Chuỗi ban đầu là. Let’s_try, this now Danh sách sau khi thực hiện chức năng tách. [“Hãy”, ‘thử’, ‘này’, ‘bây giờ’]

Bạn có thể tách một chuỗi trong Python bằng nhiều dấu phân cách không?

Cách tách một chuỗi có nhiều dấu phân cách. phương pháp split[] , e. g. lại. chia [r',. -', my_str_2]. Ở đó. split[] sẽ tách chuỗi trên tất cả các lần xuất hiện của một trong các dấu phân cách.

split[] có thể lấy nhiều đố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.

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 . Sợi dây.

Là chia một regex?

Phương thức split[String regex] phân tách chuỗi này xung quanh các kết quả khớp của biểu thức chính quy đã cho . Phương thức này hoạt động giống như cách gọi phương thức i. e split[String regex, int limit] với biểu thức đã cho và đối số giới hạn bằng 0. Do đó, các chuỗi trống ở cuối không được bao gồm trong mảng kết quả.

Chủ Đề