Phương thức regex tìm kiếm một chuỗi và sau đó thay thế nó bằng một số giá trị khác. con trăn lại. hàm sub[] trong mô-đun re được sử dụng để làm như vậy
cú pháp
re.sub[pattern, replacement, string, count=0, flags=0]
Trước hết, chúng ta hãy hiểu ý nghĩa của tất cả các tham số này.
mẫu. Biểu thức chính quy bạn muốn tìm kiếm và tìm bên trong chuỗi đã cho trong Python.
chuỗi. Biến chứa chuỗi đã cho mà bạn muốn thực hiện thao tác.
đếm. Nếu mẫu xuất hiện nhiều lần trong chuỗi, số lần bạn muốn bạn muốn nó được thay thế. Giá trị mặc định là 0. nó là tùy chọn.
cờ. Cờ regex là tùy chọn.
Đầu vào
import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
Đầu ra.
[email protected]
Thay thế nhiều mẫu bằng biểu thức chính quy
Chúng ta có thể sử dụng regex để thay thế nhiều mẫu cùng một lúc bằng regex. Điều này có thể dễ dàng thực hiện bằng cú pháp sau
cú pháp
re.sub[pattern_1 | pattern_2, replacement, string, count=0, flags=0]
Đầu vào.
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
Đầu ra.
"Joe, Kim, Ema, Max, Aby, Liza"
Thay thế nhiều mẫu bằng nhiều thay thế bằng regex
Bây giờ, nếu đã từng, bạn muốn thay thế nhiều mẫu nhưng bằng các cách thay thế khác nhau thì cũng có thể sử dụng regex. Nó có thể được thực hiện với một sửa đổi nhỏ mà bạn có thể thấy trong ví dụ sau.Đầu vào.
import re
def convert_case[match_obj]:
if match_obj.group[1] is not None:
return match_obj.group[1].lower[]
if match_obj.group[2] is not None:
return match_obj.group[2].upper[]
str = "jOE kIM mAx ABY lIzA"
print[re.sub[r"[[A-Z]+] | [[a-z]+]", convert_case, str]]
Trong ví dụ này, chuỗi chứa chữ hoa và chữ thường mà chúng ta cần thay thế. Ta cần thay chữ hoa bằng chữ thường và ngược lại.
Để làm điều đó, chúng tôi sẽ tạo hai nhóm và sau đó thêm chức năng để thay thế.
Đầu ra.
"Joe Kim MaX aby LiZa"
Bớt tư tưởng
Để thay thế một chuỗi trong Python, phương thức regex sub[] được sử dụng. Đó là một phương thức Python tích hợp trong mô-đun re trả về chuỗi đã thay thế. Đừng quên nhập mô-đun lại. Phương thức này tìm kiếm mẫu trong chuỗi và sau đó thay thế nó bằng một biểu thức đã cho mới. Mọi người có thể tìm hiểu thêm về các khái niệm Python tại đây
Trong bài viết này, sẽ tìm hiểu cách sử dụng biểu thức chính quy để thực hiện các thao tác tìm kiếm và thay thế trên chuỗi trong Python
Python regex cung cấp
target_string = "Jessa knows testing and machine learning"4 phương pháp
target_string = "Jessa knows testing and machine learning"5 để tìm kiếm và thay thế các mẫu trong một chuỗi. Sử dụng các phương thức này, chúng ta có thể thay thế một hoặc nhiều lần xuất hiện của mẫu biểu thức chính quy trong chuỗi đích bằng một chuỗi thay thế
Sau khi đọc bài viết này, bạn sẽ có thể thực hiện các thao tác thay thế biểu thức chính quy sau trong Python
Hoạt độngMô tảtarget_string = "Jessa knows testing and machine learning"6Tìm và thay thế tất cả các lần xuất hiện của
target_string = "Jessa knows testing and machine learning"7 bằng
target_string = "Jessa knows testing and machine learning"8
target_string = "Jessa knows testing and machine learning"9Tìm và chỉ thay thế các lần xuất hiện đầu tiên của
target_string = "Jessa knows testing and machine learning"7 bằng
target_string = "Jessa knows testing and machine learning"8
import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
62Tìm và thay thế các lần xuất hiện đầu tiên của import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
63 của target_string = "Jessa knows testing and machine learning"7 bằng các hoạt động thay thế biểu thức chính quy của
target_string = "Jessa knows testing and machine learning"8Python
Trước khi tiếp tục, hãy xem cú pháp của phương thức
target_string = "Jessa knows testing and machine learning"4
Mục lục
Cách sử dụng phương pháp import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
67
import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
Để hiểu cách sử dụng
import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
67 để thay thế regex, trước tiên chúng ta cần hiểu cú pháp của nóCú pháp của lại. phụ[]
[email protected]
3Mẫu biểu thức chính quy, thay thế và chuỗi đích là các đối số bắt buộc. Số lượng và cờ là tùy chọn
target_string = "Jessa knows testing and machine learning"
7. Mẫu biểu thức chính quy để tìm bên trong chuỗi đích- thay thế. Sự thay thế mà chúng ta sẽ chèn cho mỗi lần xuất hiện của một mẫu.
target_string = "Jessa knows testing and machine learning"
8 có thể là một chuỗi hoặc hàm
61. Biến trỏ đến chuỗi đích [Trong đó chúng tôi muốn thực hiện thay thế][email protected]
62. Số lần xuất hiện mẫu tối đa được thay thế.[email protected]
62 phải luôn là số nguyên dương nếu được chỉ định. . Theo mặc định,[email protected]
62 được đặt thành 0, có nghĩa là phương thức[email protected]
67 sẽ thay thế tất cả các lần xuất hiện mẫu trong chuỗi mục tiêuimport re str = "[email protected]" print[re.sub["[a-z]*@", "[email protected]", str]]
- ______266. Cuối cùng, đối số cuối cùng là tùy chọn và đề cập đến cờ regex. Theo mặc định, không có cờ nào được áp dụng.
Có nhiều giá trị cờ chúng ta có thể sử dụng. Ví dụ:
67 được sử dụng để thực hiện tìm kiếm và thay thế không phân biệt chữ hoa chữ thường.[email protected]
Giá trị trả về
Nó trả về chuỗi thu được bằng cách thay thế các lần xuất hiện mẫu trong chuỗi bằng chuỗi thay thế. Nếu không tìm thấy mẫu, chuỗi được trả về không thay đổi
Bây giờ, hãy kiểm tra điều này
Ví dụ về Regex để thay thế tất cả khoảng trắng bằng dấu gạch dưới
Bây giờ, hãy xem cách sử dụng
import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
67 với sự trợ giúp của một ví dụ đơn giản. Ở đây, chúng ta sẽ thực hiện hai thao tác thay thế- Thay thế tất cả khoảng trắng bằng dấu gạch nối
- Xóa tất cả các khoảng trắng
Trước tiên hãy xem kịch bản đầu tiên
Mẫu để thay thế.
[email protected]
69Trong ví dụ này, chúng tôi sẽ sử dụng chuỗi đặc biệt của biểu thức chính quy
[email protected]
69 khớp với bất kỳ ký tự khoảng trắng nào, viết tắt của re.sub[pattern_1 | pattern_2, replacement, string, count=0, flags=0]
61Giả sử bạn có chuỗi sau và bạn muốn thay thế tất cả khoảng trắng bằng dấu gạch dưới
________số 8Thí dụ
import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
6Regex để xóa khoảng trắng khỏi chuỗi
Bây giờ, hãy chuyển sang kịch bản thứ hai, nơi bạn có thể xóa tất cả khoảng trắng khỏi chuỗi bằng regex. Hoạt động loại bỏ regex này bao gồm bốn trường hợp sau
- Xóa tất cả các khoảng trắng, bao gồm một hoặc nhiều khoảng trắng [ mẫu cần xóa
62 ]re.sub[pattern_1 | pattern_2, replacement, string, count=0, flags=0]
- Xóa khoảng trắng ở đầu [ mẫu để xóa
63 ]re.sub[pattern_1 | pattern_2, replacement, string, count=0, flags=0]
- Xóa khoảng trắng ở cuối [ mẫu để xóa
64 ]re.sub[pattern_1 | pattern_2, replacement, string, count=0, flags=0]
- Xóa cả khoảng trắng ở đầu và cuối. [mẫu cần xóa
65 ]re.sub[pattern_1 | pattern_2, replacement, string, count=0, flags=0]
ví dụ 1. Xóa tất cả khoảng trắng
[email protected]
6ví dụ 2. Loại bỏ không gian hàng đầu
re.sub[pattern_1 | pattern_2, replacement, string, count=0, flags=0]
6ví dụ 3. Xóa dấu cách
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
5Ví dụ 4. Xóa cả khoảng trắng ở đầu và cuối
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
6Thay thế nhiều khoảng trắng bằng một khoảng trắng bằng regex
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
7Giới hạn số lần xuất hiện mẫu tối đa được thay thế
Như tôi đã nói với bạn, đối số
[email protected]
62 của phương thức import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
67 là tùy chọn. Đối số đếm sẽ đặt số lần thay thế tối đa mà chúng tôi muốn thực hiện bên trong chuỗi. Theo mặc định, [email protected]
62 được đặt thành 0, có nghĩa là phương thức import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
67 sẽ thay thế tất cả các lần xuất hiện mẫu trong chuỗi mục tiêuChỉ thay thế những lần xuất hiện đầu tiên của một mẫu
Bằng cách đặt
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
50 bên trong một import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
67, chúng ta chỉ có thể thay thế lần xuất hiện đầu tiên của một mẫu trong chuỗi mục tiêu bằng một chuỗi khácThay thế n lần xuất hiện của một mẫu
Đặt giá trị đếm thành số lần thay thế bạn muốn thực hiện
Bây giờ hãy xem ví dụ
Thí dụ
"Joe, Kim, Ema, Max, Aby, Liza"
4Hàm thay thế Regex
Chúng ta đã thấy cách tìm và thay thế mẫu biểu thức chính quy bằng một chuỗi cố định trong ví dụ trước. Trong ví dụ này, chúng ta thấy cách thay thế một mẫu bằng đầu ra của hàm
Ví dụ bạn muốn thay thế tất cả các chữ hoa bằng một chữ thường. Để đạt được điều này, chúng ta cần hai điều sau đây
- Một mẫu biểu thức chính quy khớp với tất cả các chữ cái viết hoa
- và chức năng thay thế sẽ chuyển đổi chữ hoa phù hợp thành chữ thường
Mẫu để thay thế.
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
52Mẫu này sẽ khớp với bất kỳ chữ cái viết hoa nào bên trong chuỗi mục tiêu
chức năng thay thế
Bạn có thể chuyển một hàm tới
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
53. Khi bạn thực thi import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
67 hàm của bạn sẽ nhận một đối tượng khớp làm đối số. Nếu có thể thực hiện thao tác thay thế bằng cách trích xuất giá trị khớp từ một đối tượng khớpNếu một thay thế là một chức năng, nó được gọi cho mọi lần xuất hiện mẫu không chồng chéo. Hàm nhận một đối số đối tượng khớp duy nhất và trả về chuỗi thay thế
Vì vậy, trong trường hợp của chúng tôi, chúng tôi sẽ làm như sau
- Đầu tiên chúng ta cần tạo hàm thay thế chữ hoa bằng chữ thường
- Tiếp theo, chúng ta cần chuyển hàm này làm đối số thay thế cho
67import re str = "[email protected]" print[re.sub["[a-z]*@", "[email protected]", str]]
- Bất cứ khi nào
67 khớp với mẫu, Nó sẽ gửi đối tượng khớp tương ứng đến chức năng thay thếimport re str = "[email protected]" print[re.sub["[a-z]*@", "[email protected]", str]]
- Bên trong một hàm thay thế, chúng ta sẽ sử dụng phương thức group[] để trích xuất một chữ hoa và chuyển nó thành chữ thường
Thí dụ
import re
def convert_case[match_obj]:
if match_obj.group[1] is not None:
return match_obj.group[1].lower[]
if match_obj.group[2] is not None:
return match_obj.group[2].upper[]
str = "jOE kIM mAx ABY lIzA"
print[re.sub[r"[[A-Z]+] | [[a-z]+]", convert_case, str]]
0Regex thay thế nhóm/nhiều mẫu regex
Chúng ta đã thấy cách tìm và thay thế mẫu biểu thức chính quy đơn lẻ trong các ví dụ trước đó. Trong phần này, chúng ta sẽ tìm hiểu cách tìm kiếm và thay thế nhiều mẫu trong chuỗi mục tiêu
Để hiểu điều này, hãy lấy ví dụ về chuỗi sau
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
57Ở đây, chúng tôi muốn tìm và thay thế hai mẫu riêng biệt cùng một lúc
Chúng tôi muốn thay thế từng khoảng trắng và dấu gạch nối [-] bằng dấu phẩy [,] bên trong chuỗi mục tiêu. Để đạt được điều này, trước tiên chúng ta phải viết hai mẫu biểu thức chính quy
- Mẫu 1.
69 phù hợp với tất cả các khoảng trắng[email protected]
- mẫu 2.
59 khớp với dấu gạch nối [-]import re str = "Joe-Kim Ema Max Aby Liza" print[re.sub["[\s] | [-]", ", ", str]]
Thí dụ
target_string = "Jessa knows testing and machine learning"0
Thay thế nhiều mẫu regex bằng thay thế khác nhau
Để hiểu điều này, hãy lấy ví dụ về chuỗi sau
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
60Chuỗi trên chứa sự kết hợp của chữ hoa và chữ thường
Ở đây, chúng tôi muốn khớp và thay thế hai mẫu riêng biệt bằng hai thay thế khác nhau
- Thay thế mỗi từ viết hoa bằng một chữ thường
- Và thay thế từng chữ thường bằng chữ hoa
Vì vậy, trước tiên chúng tôi sẽ chụp hai nhóm và sau đó thay thế từng nhóm bằng chức năng thay thế. Nếu bạn chưa biết chức năng thay thế vui lòng đọc tại đây
Nhóm 1. [[A-Z]+]
- Để nắm bắt và thay thế tất cả các từ viết hoa bằng chữ thường
- Lớp ký tự [A-Z] có nghĩa là, bất kỳ ký tự nào từ chữ A viết hoa đến Z viết hoa hoàn toàn
nhóm 2. [[a-z]+]
- Để nắm bắt và thay thế tất cả từ chữ thường bằng chữ hoa
- [a-z] lớp ký tự có nghĩa là, khớp bất kỳ ký tự nào từ chữ hoa thường a đến z bằng chữ thường
Ghi chú. Bất cứ khi nào bạn muốn chụp các nhóm, hãy viết chúng trong ngoặc đơn _______ 461, _______ 462
Thí dụ
target_string = "Jessa knows testing and machine learning"1
Phương thức subn[] của RE
Phương thức
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
63 là phương thức mới, tuy thực hiện nhiệm vụ tương tự như phương thức import re
str = "[email protected]"
print[re.sub["[a-z]*@", "[email protected]", str]]
67 nhưng kết quả trả về hơi khác một chútPhương thức
import re
str = "Joe-Kim Ema Max Aby Liza"
print[re.sub["[\s] | [-]", ", ", str]]
63 trả về một bộ gồm hai phần tử- Phần tử đầu tiên của kết quả là phiên bản mới của chuỗi đích sau khi tất cả các thay thế đã được thực hiện
- Yếu tố thứ hai là số lần thay thế nó đã thực hiện
Hãy kiểm tra điều này bằng ví dụ tương tự như trước và chỉ thay thế phương thức
Thí dụ
target_string = "Jessa knows testing and machine learning"2
Ghi chú. Ghi chú. Tôi đã không thay đổi bất cứ điều gì trong mẫu biểu thức chính quy và chuỗi kết quả vẫn như cũ, chỉ có điều lần này nó được đưa vào một bộ như là phần tử đầu tiên của bộ đó. Sau đó, sau dấu phẩy, chúng tôi có số lần thay thế được thực hiện và đó là ba
Chúng ta cũng có thể sử dụng đối số đếm của phương thức
target_string = "Jessa knows testing and machine learning"5. Vì vậy, giá trị của phần tử thứ hai của bộ kết quả sẽ thay đổi tương ứng