Kiểm tra xem biểu thức chính quy trong chuỗi Python
Nếu bạn là người mới lập trình hoặc đến từ một ngôn ngữ lập trình không phải Python, bạn có thể đang tìm kiếm cách tốt nhất để kiểm tra xem một chuỗi có chứa một chuỗi khác hay không trong Python Show
Việc xác định các chuỗi con như vậy sẽ hữu ích khi bạn đang làm việc với nội dung văn bản từ một tệp hoặc sau khi bạn nhận được đầu vào của người dùng. Bạn có thể muốn thực hiện các hành động khác nhau trong chương trình của mình tùy thuộc vào việc có chuỗi con hay không Trong hướng dẫn này, bạn sẽ tập trung vào cách Pythonic nhất để giải quyết tác vụ này, sử dụng toán tử thành viên 1. Ngoài ra, bạn sẽ tìm hiểu cách xác định các phương thức chuỗi phù hợp cho các trường hợp sử dụng có liên quan nhưng khác nhauCuối cùng, bạn cũng sẽ học cách tìm chuỗi con trong cột gấu trúc. Điều này hữu ích nếu bạn cần tìm kiếm dữ liệu từ tệp CSV. Bạn có thể sử dụng phương pháp mà bạn sẽ học trong phần tiếp theo, nhưng nếu bạn đang làm việc với dữ liệu dạng bảng, thì tốt nhất là tải dữ liệu vào DataFrame của gấu trúc và Tải xuống miễn phí. Nhấp vào đây để tải xuống mã mẫu mà bạn sẽ sử dụng để kiểm tra xem một chuỗi có chứa chuỗi con không Cách xác nhận rằng một chuỗi Python chứa một chuỗi khácNếu bạn cần kiểm tra xem một chuỗi có chứa chuỗi con hay không, hãy sử dụng toán tử thành viên của Python 1. Trong Python, đây là cách được đề xuất để xác nhận sự tồn tại của chuỗi con trong chuỗi>>>
Toán tử thành viên 1 cung cấp cho bạn một cách nhanh chóng và dễ đọc để kiểm tra xem một chuỗi con có tồn tại trong một chuỗi hay không. Bạn có thể nhận thấy rằng dòng mã gần giống như tiếng AnhGhi chú. Nếu bạn muốn kiểm tra xem chuỗi con không có trong chuỗi hay không, thì bạn có thể sử dụng >>>
Bởi vì chuỗi con 5 có mặt trong 6, nên toán tử 4 trả về 8Khi bạn sử dụng 1, biểu thức sẽ trả về giá trị Boolean
Bạn có thể sử dụng cú pháp trực quan này trong các câu lệnh có điều kiện để đưa ra quyết định trong mã của mình >>>
Trong đoạn mã này, bạn sử dụng toán tử thành viên để kiểm tra xem 5 có phải là chuỗi con của 6 không. Nếu đúng như vậy, thì bạn sẽ in một tin nhắn đến thiết bị đầu cuối. Mọi mã thụt lề sẽ chỉ thực thi nếu chuỗi Python mà bạn đang kiểm tra chứa chuỗi con mà bạn cung cấpGhi chú. Python xem xét bất kỳ chuỗi nào khác, vì vậy việc kiểm tra chuỗi trống trong chuỗi trả về 0>>>
Điều này có thể gây ngạc nhiên vì Python xem xét , nhưng đó là một trường hợp cạnh hữu ích cần ghi nhớ Toán tử thành viên 1 là người bạn tốt nhất của bạn nếu bạn chỉ cần kiểm tra xem chuỗi Python có chứa chuỗi con hay khôngTuy nhiên, nếu bạn muốn biết thêm về chuỗi con thì sao? Python đã tìm thấy sự cố nào trong số này? Loại bỏ các quảng cáoTổng quát hóa séc của bạn bằng cách loại bỏ phân biệt chữ hoa chữ thườngChuỗi Python phân biệt chữ hoa chữ thường. Nếu chuỗi con mà bạn cung cấp sử dụng cách viết hoa khác với cùng một từ trong văn bản của bạn, thì Python sẽ không tìm thấy chuỗi đó. Ví dụ: nếu bạn kiểm tra từ viết thường 5 trên a của văn bản gốc, kiểm tra toán tử thành viên sẽ trả về 8>>>
Mặc dù thực tế là từ bí mật xuất hiện nhiều lần trong văn bản viết hoa tiêu đề 9, nhưng nó không bao giờ xuất hiện ở tất cả các chữ thường. Đó là lý do tại sao kiểm tra mà bạn thực hiện với nhà điều hành thành viên trả về 8. Python không thể tìm thấy chuỗi toàn chữ thường 5 trong văn bản được cung cấpCon người có cách tiếp cận ngôn ngữ khác với máy tính. Đây là lý do tại sao bạn thường muốn bỏ qua cách viết hoa khi kiểm tra xem một chuỗi có chứa chuỗi con hay không trong Python Bạn có thể khái quát hóa việc kiểm tra chuỗi con của mình bằng cách chuyển đổi toàn bộ văn bản đầu vào thành chữ thường >>>
Chuyển đổi văn bản đầu vào của bạn thành chữ thường là một cách phổ biến để giải thích cho thực tế là con người nghĩ về các từ chỉ khác nhau về cách viết hoa là cùng một từ, trong khi máy tính thì không Ghi chú. Đối với các ví dụ sau, bạn sẽ tiếp tục làm việc với 2, phiên bản chữ thường của văn bản của bạnNếu bạn làm việc với chuỗi gốc ( 6) hoặc chuỗi trong tiêu đề ( 9), thì bạn sẽ nhận được kết quả khác vì chúng không ở dạng chữ thường. Vui lòng thử điều đó trong khi bạn làm việc với các ví dụBây giờ bạn đã chuyển đổi chuỗi thành chữ thường để tránh các sự cố ngoài ý muốn xuất phát từ phân biệt chữ hoa chữ thường, đã đến lúc đào sâu hơn và tìm hiểu thêm về chuỗi con Tìm hiểu thêm về chuỗi conToán tử thành viên 1 là một cách tuyệt vời để kiểm tra một cách mô tả xem có một chuỗi con trong một chuỗi hay không, nhưng nó không cung cấp cho bạn bất kỳ thông tin nào khác hơn thế. Nó hoàn hảo cho việc kiểm tra có điều kiện—nhưng nếu bạn cần biết thêm về các chuỗi con thì sao?Python cung cấp nhiều phương thức chuỗi bổ sung cho phép bạn kiểm tra xem chuỗi đó chứa bao nhiêu chuỗi con đích, để tìm kiếm các chuỗi con theo các điều kiện phức tạp hoặc để xác định vị trí chỉ mục của chuỗi con trong văn bản của bạn Trong phần này, bạn sẽ đề cập đến một số phương thức chuỗi bổ sung có thể giúp bạn tìm hiểu thêm về chuỗi con Ghi chú. Bạn có thể đã thấy các phương pháp sau được sử dụng để kiểm tra xem một chuỗi có chứa chuỗi con hay không. Điều này là có thể — nhưng chúng không được sử dụng cho mục đích đó Lập trình là một hoạt động sáng tạo và bạn luôn có thể tìm ra những cách khác nhau để hoàn thành cùng một nhiệm vụ. Tuy nhiên, để mã của bạn dễ đọc, tốt nhất bạn nên sử dụng các phương thức như chúng dự định trong ngôn ngữ mà bạn đang làm việc Bằng cách sử dụng 1, bạn đã xác nhận rằng chuỗi chứa chuỗi con. Nhưng bạn không nhận được bất kỳ thông tin nào về vị trí của chuỗi conNếu bạn cần biết chuỗi con xuất hiện ở đâu trong chuỗi của mình, thì bạn có thể sử dụng 7 trên đối tượng chuỗi>>>
Khi bạn gọi 7 trên chuỗi và chuyển chuỗi con đó làm đối số, bạn sẽ nhận được vị trí chỉ mục của ký tự đầu tiên trong lần xuất hiện đầu tiên của chuỗi conGhi chú. Nếu Python không thể tìm thấy chuỗi con, thì 7 sẽ đưa ra một ngoại lệ 0Nhưng nếu bạn muốn tìm các lần xuất hiện khác của chuỗi con thì sao? . Do đó, bằng cách chuyển các vị trí chỉ mục cụ thể, bạn có thể bỏ qua các lần xuất hiện của chuỗi con mà bạn đã xác định >>>
Khi bạn chuyển một chỉ mục bắt đầu vượt qua lần xuất hiện đầu tiên của chuỗi con, thì Python sẽ tìm kiếm bắt đầu từ đó. Trong trường hợp này, bạn nhận được một trận đấu khác và không phải là 0Điều đó có nghĩa là văn bản chứa chuỗi con nhiều hơn một lần. Nhưng nó có thường xuyên ở trong đó không? Bạn có thể sử dụng 3 để nhanh chóng nhận được câu trả lời của mình bằng cách sử dụng mã Python mô tả và thành ngữ>>>
Bạn đã sử dụng 3 trên chuỗi chữ thường và chuyển chuỗi con 5 làm đối số. Python đếm tần suất chuỗi con xuất hiện trong chuỗi và trả về câu trả lời. Văn bản chứa chuỗi con bốn lần. Nhưng những chuỗi con này trông như thế nào?Bạn có thể kiểm tra tất cả các chuỗi con bằng cách tách văn bản của bạn ở các đường viền từ mặc định và in các từ vào thiết bị đầu cuối của bạn bằng cách sử dụng vòng lặp 6>>>
Trong ví dụ này, bạn sử dụng 7 để tách văn bản ở các khoảng trắng thành các chuỗi, mà Python gói thành một danh sách. Sau đó, bạn lặp lại danh sách này và sử dụng 1 trên mỗi chuỗi này để xem liệu nó có chứa chuỗi con 5 hay khôngGhi chú. Thay vì in các chuỗi con, bạn cũng có thể lưu chúng vào một danh sách mới, chẳng hạn bằng cách sử dụng cách hiểu danh sách với biểu thức điều kiện >>> 0Trong trường hợp này, bạn xây dựng một danh sách chỉ từ những từ có chứa chuỗi con, về cơ bản là lọc văn bản Bây giờ bạn có thể kiểm tra tất cả các chuỗi con mà Python xác định, bạn có thể nhận thấy rằng Python không quan tâm liệu có bất kỳ ký tự nào sau chuỗi con 5 hay không. Nó tìm thấy từ cho dù nó được theo sau bởi khoảng trắng hay dấu chấm câu. Nó thậm chí còn tìm thấy những từ như 1Bạn nên biết điều đó, nhưng bạn có thể làm gì nếu muốn đặt các điều kiện chặt chẽ hơn cho việc kiểm tra chuỗi con của mình? Loại bỏ các quảng cáoTìm chuỗi con có điều kiện bằng RegexBạn có thể chỉ muốn so khớp các lần xuất hiện của chuỗi con theo sau dấu chấm câu hoặc xác định các từ chứa chuỗi con cộng với các chữ cái khác, chẳng hạn như 1Đối với những trường hợp như vậy yêu cầu khớp chuỗi liên quan nhiều hơn, bạn có thể sử dụng biểu thức chính quy hoặc biểu thức chính quy, với mô-đun 3 của PythonVí dụ: nếu bạn muốn tìm tất cả các từ bắt đầu bằng 5 nhưng sau đó được theo sau bởi ít nhất một chữ cái bổ sung, thì bạn có thể sử dụng biểu thức chính quy ( 5) theo sau là ( 6)>>> 1Hàm 7 trả về cả chuỗi con khớp với điều kiện cũng như vị trí chỉ mục bắt đầu và kết thúc của nó—chứ không chỉ là 0Sau đó, bạn có thể truy cập các thuộc tính này thông qua , được ký hiệu là 0>>> 2Những kết quả này mang lại cho bạn rất nhiều sự linh hoạt để tiếp tục làm việc với chuỗi con phù hợp Ví dụ: bạn chỉ có thể tìm kiếm các chuỗi con được theo sau bởi dấu phẩy ( 1) hoặc dấu chấm (_______37_______2)>>> 3Có hai kết quả khớp tiềm năng trong văn bản của bạn, nhưng bạn chỉ khớp kết quả đầu tiên phù hợp với truy vấn của mình. Khi bạn sử dụng 7, Python lại chỉ tìm thấy kết quả khớp đầu tiên. Điều gì sẽ xảy ra nếu bạn muốn tất cả các đề cập của 5 phù hợp với một điều kiện nhất định?Để tìm tất cả các kết quả phù hợp bằng cách sử dụng 3, bạn có thể làm việc với 6>>> 4Bằng cách sử dụng 6, bạn có thể tìm thấy tất cả các kết quả phù hợp của mẫu trong văn bản của mình. Python lưu tất cả các kết quả khớp dưới dạng chuỗi trong danh sách cho bạnKhi bạn sử dụng a , bạn có thể chỉ định phần nào của kết quả khớp mà bạn muốn giữ lại trong danh sách của mình bằng cách đặt phần đó trong ngoặc đơn >>> 5Bằng cách đặt bí mật trong dấu ngoặc đơn, bạn đã xác định một nhóm chụp duy nhất. Trả về một danh sách các chuỗi khớp với nhóm chụp đó, miễn là có chính xác một nhóm chụp trong mẫu. Bằng cách thêm dấu ngoặc đơn xung quanh bí mật, bạn đã loại bỏ được dấu chấm câu Ghi chú. Hãy nhớ rằng có bốn lần xuất hiện của chuỗi con 5 trong văn bản của bạn và bằng cách sử dụng 3, bạn đã lọc ra hai lần xuất hiện cụ thể mà bạn khớp theo các điều kiện đặc biệtSử dụng 6 với các nhóm đối sánh là một cách hiệu quả để trích xuất các chuỗi con từ văn bản của bạn. Nhưng bạn chỉ nhận được một danh sách các chuỗi, điều đó có nghĩa là bạn đã mất các vị trí chỉ mục mà bạn có quyền truy cập khi bạn đang sử dụng 7Nếu bạn muốn giữ thông tin đó xung quanh, thì 3 có thể cung cấp cho bạn tất cả các kết quả phù hợp trong một trình vòng lặp>>> 6Khi bạn sử dụng 4 và chuyển cho nó mẫu tìm kiếm và nội dung văn bản của bạn làm đối số, bạn có thể truy cập từng đối tượng 9 có chứa chuỗi con, cũng như vị trí chỉ mục bắt đầu và kết thúc của nóBạn có thể nhận thấy rằng dấu chấm câu xuất hiện trong các kết quả này mặc dù bạn vẫn đang sử dụng nhóm chụp. Đó là bởi vì biểu diễn chuỗi của a hiển thị toàn bộ trận đấu thay vì chỉ nhóm chụp đầu tiên Nhưng đối tượng 9 là một thùng chứa thông tin mạnh mẽ và, giống như bạn đã thấy trước đó, bạn chỉ có thể chọn ra thông tin mà bạn cần>>> 7Bằng cách gọi và chỉ định rằng bạn muốn nhóm chụp đầu tiên, bạn đã chọn từ bí mật không có dấu chấm câu từ mỗi chuỗi con phù hợp Bạn có thể đi sâu vào chi tiết hơn với khớp chuỗi con khi bạn sử dụng biểu thức chính quy. Thay vì chỉ kiểm tra xem một chuỗi có chứa một chuỗi khác hay không, bạn có thể tìm kiếm các chuỗi con theo các điều kiện phức tạp Ghi chú. Nếu bạn muốn tìm hiểu thêm về cách sử dụng các nhóm bắt giữ và soạn các mẫu biểu thức chính quy phức tạp hơn, thì bạn có thể tìm hiểu sâu hơn về các biểu thức chính quy trong Python Sử dụng biểu thức chính quy với 3 là một cách tiếp cận tốt nếu bạn cần thông tin về các chuỗi con hoặc nếu bạn cần tiếp tục làm việc với chúng sau khi tìm thấy chúng trong văn bản. Nhưng nếu bạn đang làm việc với dữ liệu dạng bảng thì sao? Loại bỏ các quảng cáoTìm một chuỗi con trong cột DataFrame của gấu trúcNếu bạn làm việc với dữ liệu không đến từ tệp văn bản thuần túy hoặc từ đầu vào của người dùng, mà từ tệp CSV hoặc trang tính Excel, thì bạn có thể sử dụng phương pháp tương tự như đã thảo luận ở trên Tuy nhiên, có một cách tốt hơn để xác định ô nào trong cột chứa chuỗi con. bạn sẽ sử dụng gấu trúc. Trong ví dụ này, bạn sẽ làm việc với tệp CSV chứa tên công ty và khẩu hiệu giả mạo. Bạn có thể download file bên dưới nếu muốn làm việc cùng Tải xuống miễn phí. Nhấp vào đây để tải xuống mã mẫu mà bạn sẽ sử dụng để kiểm tra xem một chuỗi có chứa chuỗi con không Khi bạn đang làm việc với dữ liệu dạng bảng trong Python, tốt nhất bạn nên tải dữ liệu đó vào pandas 0 trước>>> 8Trong khối mã này, bạn đã tải tệp CSV chứa một nghìn hàng dữ liệu công ty giả mạo vào DataFrame của gấu trúc và kiểm tra năm hàng đầu tiên bằng cách sử dụng 1Ghi chú. Bạn sẽ cần tạo một môi trường ảo và để làm việc với thư viện Sau khi bạn đã tải dữ liệu vào DataFrame, bạn có thể nhanh chóng truy vấn toàn bộ cột pandas để lọc các mục có chứa chuỗi con >>> 9Bạn có thể sử dụng 2 trên cột gấu trúc và chuyển chuỗi con đó làm đối số để lọc các hàng chứa chuỗi conGhi chú. Toán tử lập chỉ mục ( 3) và toán tử thuộc tính ( 2) cung cấp các cách trực quan của một cột hoặc lát cắt của Khung dữ liệuTuy nhiên, nếu bạn đang làm việc với mã sản xuất liên quan đến hiệu suất, pandas khuyên bạn nên sử dụng các phương pháp truy cập dữ liệu được tối ưu hóa cho Khi bạn đang làm việc với 2 và bạn cần các tình huống đối sánh phức tạp hơn, bạn cũng có thể sử dụng biểu thức chính quy. Bạn chỉ cần chuyển một mẫu tìm kiếm tuân thủ regex làm đối số chuỗi con>>> 0Trong đoạn mã này, bạn đã sử dụng cùng một mẫu mà bạn đã sử dụng trước đó để chỉ khớp các từ chứa bí mật nhưng sau đó tiếp tục với một hoặc nhiều ký tự từ ( 6). Chỉ một trong số các công ty trong bộ dữ liệu giả mạo này dường như hoạt động bí mậtBạn có thể viết bất kỳ mẫu biểu thức chính quy phức tạp nào và chuyển nó tới 2 để khắc từ cột gấu trúc của bạn chỉ các hàng mà bạn cần cho phân tích của mìnhPhần kết luậnGiống như một thợ săn kho báu bền bỉ, bạn đã tìm thấy từng 5, bất kể nó được cất giấu kỹ đến đâu. Trong quá trình này, bạn đã học được rằng cách tốt nhất để kiểm tra xem một chuỗi có chứa chuỗi con hay không trong Python là sử dụng toán tử thành viên 1Bạn cũng đã học cách mô tả sử dụng hai phương thức chuỗi khác, thường bị lạm dụng để kiểm tra các chuỗi con
Sau đó, bạn đã khám phá cách tìm chuỗi con theo các điều kiện nâng cao hơn với các biểu thức chính quy và một số hàm trong mô-đun 3 của PythonCuối cùng, bạn cũng đã học cách sử dụng phương pháp DataFrame 2 để kiểm tra mục nào trong DataFrame của gấu trúc chứa chuỗi conBây giờ bạn đã biết cách chọn cách tiếp cận thành ngữ nhất khi làm việc với các chuỗi con trong Python. Tiếp tục sử dụng phương pháp mô tả nhất cho công việc và bạn sẽ viết mã thú vị để đọc và nhanh chóng để người khác hiểu Tải xuống miễn phí. Nhấp vào đây để tải xuống mã mẫu mà bạn sẽ sử dụng để kiểm tra xem một chuỗi có chứa chuỗi con không Đánh dấu là đã hoàn thành 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Martin Breuss Martin thích tự động hóa, trò đùa ngớ ngẩn và rắn, tất cả đều phù hợp với cộng đồng Python. Anh ấy thích học hỏi và khám phá và cũng sẵn sàng nói về nó. Anh ấy viết và ghi nội dung cho Real Python và CodingNomads » Thông tin thêm về MartinMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Geir Arne Ian kate Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Chuyên gia Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Làm cách nào để kiểm tra xem mẫu có trong chuỗi Python không?Dùng find() để kiểm tra xem một chuỗi có chứa chuỗi con khác không
. Hàm này trả về vị trí chỉ mục đầu tiên nơi chuỗi con được tìm thấy, nếu không thì trả về -1. string find() function to check if string contains a substring or not. This function returns the first index position where substring is found, else returns -1.
Làm cách nào để xác thực chuỗi bằng regex?Có thể làm theo các bước sau để tính toán câu trả lời. . lấy chuỗi Tạo biểu thức chính quy để xác thực chuỗi đã cho. . Khớp chuỗi với Regex. . Trả về true nếu chuỗi khớp với biểu thức chính quy đã cho, ngược lại trả về false Làm cách nào để kiểm tra xem một chuỗi có chứa một bộ ký tự trong Python không?Cách dễ nhất và hiệu quả nhất để xem liệu một chuỗi có chứa chuỗi con hay không là sử dụng nếu. trong các câu lệnh , trả về True nếu chuỗi con được phát hiện. Ngoài ra, bằng cách sử dụng hàm find(), có thể lấy chỉ mục mà chuỗi con bắt đầu tại đó hoặc -1 nếu Python không thể tìm thấy chuỗi con. |