Làm thế nào để bạn thay thế một chuỗi con từ một chuỗi trong python regex?

Thay thế tất cả hoặc n lần xuất hiện của một chuỗi con trong một chuỗi đã cho là một vấn đề khá phổ biến trong thao tác chuỗi và xử lý văn bản nói chung. May mắn thay, hầu hết các tác vụ này đều được thực hiện dễ dàng trong Python nhờ vô số hàm tích hợp sẵn của nó, bao gồm cả hàm này

Giả sử, chúng ta có một chuỗi chứa câu sau

The brown-eyed man drives a brown car.

Mục tiêu của chúng ta là thay thế từ

string.replace(oldStr, newStr, count)
1 bằng từ
string.replace(oldStr, newStr, count)
2

The blue-eyed man drives a blue car.

Trong bài viết này, chúng ta sẽ sử dụng hàm

string.replace(oldStr, newStr, count)
3 cũng như hàm
string.replace(oldStr, newStr, count)
4 và
string.replace(oldStr, newStr, count)
5 với các mẫu để thay thế tất cả các lần xuất hiện của một chuỗi con từ một chuỗi

thay thế()

Cách đơn giản nhất để thực hiện việc này là sử dụng chức năng tích hợp sẵn -

string.replace(oldStr, newStr, count)
3

string.replace(oldStr, newStr, count)

Hai tham số đầu tiên là bắt buộc, trong khi tham số thứ ba là tùy chọn.

string.replace(oldStr, newStr, count)
7 là chuỗi con chúng tôi muốn thay thế bằng
string.replace(oldStr, newStr, count)
8. Điều đáng chú ý là hàm trả về một chuỗi mới, với phép biến đổi được thực hiện mà không ảnh hưởng đến chuỗi ban đầu

Thử một lần đi

string.replace(oldStr, newStr, count)
1

Chúng tôi đã thực hiện thao tác trên

string.replace(oldStr, newStr, count)
9, đóng gói kết quả vào
string.replace(oldStr, newStr, count)
10 và in cả hai

Mã này dẫn đến

string.replace(oldStr, newStr, count)
4

Một lần nữa, chuỗi trong bộ nhớ mà

string.replace(oldStr, newStr, count)
9 trỏ tới vẫn không thay đổi. Các chuỗi trong Python là bất biến, điều đó có nghĩa đơn giản là bạn không thể thay đổi một chuỗi. Tuy nhiên, bạn có thể gán lại biến tham chiếu cho một giá trị mới

Để dường như thực hiện thao tác này tại chỗ, chúng ta chỉ cần gán lại

string.replace(oldStr, newStr, count)
9 cho chính nó sau thao tác

string.replace(oldStr, newStr, count)
7

Ở đây, chuỗi mới được tạo bởi phương thức

string.replace(oldStr, newStr, count)
3 được gán cho biến
string.replace(oldStr, newStr, count)
9

Thay thế n lần xuất hiện của một chuỗi con

Bây giờ, nếu chúng ta không muốn thay đổi tất cả các lần xuất hiện của một chuỗi con thì sao?

Đó là nơi tham số thứ ba của hàm

string.replace(oldStr, newStr, count)
3 xuất hiện. Nó đại diện cho số lượng chuỗi con sẽ được thay thế. Đoạn mã sau chỉ thay thế lần xuất hiện đầu tiên của từ
string.replace(oldStr, newStr, count)
1 bằng từ
string.replace(oldStr, newStr, count)
2

string.replace(oldStr, newStr, count)
3

Và bản in này

string.replace(oldStr, newStr, count)
4

Theo mặc định, tham số thứ ba được đặt để thay đổi tất cả các lần xuất hiện

Chuỗi con xuất hiện với biểu thức chính quy

Để nâng cao vấn đề hơn nữa, giả sử chúng ta không chỉ muốn thay thế tất cả các lần xuất hiện của một chuỗi con nhất định mà còn thay thế tất cả các chuỗi con phù hợp với một mẫu nhất định. Thậm chí điều này có thể được thực hiện với một lớp lót, sử dụng các biểu thức chính quy và mô-đun

string.replace(oldStr, newStr, count)
18 của thư viện chuẩn

Biểu thức chính quy là một chủ đề phức tạp với nhiều mục đích sử dụng trong khoa học máy tính, vì vậy chúng tôi sẽ không đi sâu vào bài viết này nhưng nếu bạn cần bắt đầu nhanh, bạn có thể xem hướng dẫn của chúng tôi về Biểu thức chính quy trong Python

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Về bản chất, một biểu thức chính quy xác định một mẫu. Ví dụ: giả sử chúng ta có một văn bản về những người sở hữu chó và mèo và chúng ta muốn thay đổi cả hai điều khoản bằng từ

string.replace(oldStr, newStr, count)
19. Trước tiên, chúng ta cần xác định một mẫu phù hợp với cả hai thuật ngữ như -
string.replace(oldStr, newStr, count)
40

Sử dụng hàm sub()

Với mẫu đã được sắp xếp, chúng ta sẽ sử dụng hàm

string.replace(oldStr, newStr, count)
41 có cú pháp sau

string.replace(oldStr, newStr, count)
9

Đối số đầu tiên là mẫu mà chúng tôi đang tìm kiếm (một chuỗi hoặc một đối tượng

string.replace(oldStr, newStr, count)
42),
string.replace(oldStr, newStr, count)
43 là những gì chúng tôi sẽ chèn (có thể là một chuỗi hoặc một hàm; nếu đó là một chuỗi, bất kỳ dấu gạch chéo ngược nào sẽ thoát khỏi nó là

Các đối số tùy chọn là

string.replace(oldStr, newStr, count)
45 và
string.replace(oldStr, newStr, count)
46 cho biết số lần xuất hiện cần được thay thế và các cờ được sử dụng để xử lý biểu thức chính quy tương ứng

Nếu mẫu không khớp với bất kỳ chuỗi con nào, chuỗi ban đầu sẽ được trả về không thay đổi

The blue-eyed man drives a blue car.
5

mã này in

The blue-eyed man drives a blue car.
0

So khớp mẫu không phân biệt chữ hoa chữ thường

Ví dụ: để thực hiện khớp mẫu phân biệt chữ hoa chữ thường, chúng tôi sẽ đặt tham số cờ thành

string.replace(oldStr, newStr, count)
47

The blue-eyed man drives a blue car.
1

Giờ đây, bất kỳ trường hợp kết hợp nào của

string.replace(oldStr, newStr, count)
48 cũng sẽ được đưa vào. Khi khớp mẫu với nhiều chuỗi, để tránh sao chép nó ở nhiều nơi, chúng ta có thể xác định một đối tượng
string.replace(oldStr, newStr, count)
42. Chúng cũng có hàm
string.replace(oldStr, newStr, count)
4 với cú pháp

The blue-eyed man drives a blue car.
2

Sử dụng Đối tượng Mẫu

Hãy xác định một

string.replace(oldStr, newStr, count)
42 cho mèo và chó và kiểm tra một vài câu

The blue-eyed man drives a blue car.
3

Cung cấp cho chúng tôi đầu ra

The blue-eyed man drives a blue car.
4

Hàm subn()

Ngoài ra còn có một phương thức

string.replace(oldStr, newStr, count)
5 với cú pháp

The blue-eyed man drives a blue car.
5

Hàm

string.replace(oldStr, newStr, count)
5 trả về một Tuple có chuỗi và số lượng khớp trong Chuỗi mà chúng tôi đã tìm kiếm

The blue-eyed man drives a blue car.
6

Các tuple trông giống như

The blue-eyed man drives a blue car.
7

Một đối tượng

string.replace(oldStr, newStr, count)
42 chứa một hàm
string.replace(oldStr, newStr, count)
5 tương tự

The blue-eyed man drives a blue car.
8

Và nó được sử dụng theo một cách rất giống nhau

The blue-eyed man drives a blue car.
9

Kết quả này trong

string.replace(oldStr, newStr, count)
0

Phần kết luận

Python cung cấp các hàm dễ dàng và đơn giản để xử lý chuỗi. Cách dễ nhất để thay thế tất cả các lần xuất hiện của một chuỗi con đã cho trong một chuỗi là sử dụng hàm

string.replace(oldStr, newStr, count)
3

Nếu cần, mô-đun

string.replace(oldStr, newStr, count)
18 của thư viện tiêu chuẩn cung cấp bộ công cụ đa dạng hơn có thể được sử dụng cho các vấn đề thích hợp hơn như tìm mẫu và tìm kiếm phân biệt chữ hoa chữ thường

Làm cách nào để sử dụng regex để thay thế chuỗi?

Để sử dụng RegEx, đối số thay thế đầu tiên sẽ được thay thế bằng cú pháp regex, ví dụ: /regex/ . Cú pháp này đóng vai trò là một mẫu trong đó bất kỳ phần nào của chuỗi khớp với nó sẽ được thay thế bằng chuỗi con mới. Chuỗi 3foobar4 khớp với biểu thức chính quy /\d. *\d/ , vì vậy nó được thay thế.

Bạn có thể thay thế văn bản bằng regex không?

Tìm và thay thế văn bản bằng biểu thức chính quy Khi bạn muốn tìm kiếm và thay thế các mẫu văn bản cụ thể, hãy sử dụng biểu thức chính quy . Họ có thể giúp bạn khớp mẫu, phân tích cú pháp, lọc kết quả, v.v. Khi bạn học cú pháp regex, bạn có thể sử dụng nó cho hầu hết mọi ngôn ngữ.