Hướng dẫn dùng regex guide python
Trong bài viết này, mình và các bạn sẽ cùng nhau học và tìm hiểu về Regular expression ( viết tắt là RegExp) - biểu thức chính quy. RegExp đặc biệt phổ biến trong các câu lệnh Unix như Show
I. Các thao tác cơ bản với chuỗi.Mục đích của thao tác với chuỗi là
Đâu tiên ta
phải hiểu Các thao tác cơ bản mà bạn có thể quen thuộc như:
Đến những phép toán cao cấp hơn như sau. 1.SplittingChia một chuỗi thành danh sách các chuỗi con, ta có ví dụ sau:
Trong câu lệnh
Trong việc xử lý chuỗi, ví dụ là đọc file
txt khi in ra ta sẽ thấy các ký tự đặc biêt như
Hoặc một ký tự đặc biệt khác là
Chia các thành danh sách các chuỗi ký tự con khi gặp ký tự đặc biệt
2. JoiningNối các chuỗi từ một list và một ký tự lặp lại chẽn giữa 2 ký tự đó. Ví dụ (xóa các ky hiệu)
3. Stripping characters
4. Finding substringsTìm kiếm một chuỗi con trong một chuỗi cha, ta dùng như sau: Đầu ra của nó sẽ là ví trị đầu tiên bắt đầu chứa chuỗi con đếm từ 0 (nếu có) còn không trả ra -1. Ta cũng có thể xác định ví trí bắt đầu tìm kiếm trong chuỗi.
5. Counting occurrencesTrả ra số lần xuát hiện của một chuỗi con trong một chuỗi cha bất ký ta dùng câu lệnh sau: Như câu lệnh tìm kiếm, ta có thể chỉ định ví trí bắt đầu và kết thúc đếm chuỗi con.
6.Replacing substringsThay thế một chuỗi con bằng một chuỗi con mới, ta cũng có thể chỉ định số lần thay thế (mặc định là thay thế tất cả):
II. Định dang chuỗiĐịnh dạng chuỗi là quá trình truyền các biến vào trong chuỗi và trình bày chuỗi. Trong chương này, mình sẽ trình bày cách hoạt động của bốn cách để định dạng chuỗi này và điểm mạnh và điểm yếu tương ứng của chúng là gì. Mình cũng sẽ cung cấp cho bạn “quy tắc ngón tay cái” đơn giản của mình về cách mình chọn phương pháp định dạng chuỗi có mục đích chung tốt nhất. 1. Positional formattingĐịnh dạng theo vị trí trong chuỗi ta có 2 cách. Old Style %:Các chuỗi trong Python có một cách truy cập đặc biệt bằng % . Đó là một phím tắt cho phép bạn thực hiện định dạng vị trí đơn giản rất dễ dàng. Nếu bạn đã từng làm việc với hàm printf -style trong C, bạn sẽ ngay lập tức nhận ra cách hoạt động của hàm này. Ví dụ:
Ở
đây, mình đang dùng Một ví dụ khác dùng để chuyển đổi các số sang ký hiệu thập lục phân như sau:
Cú pháp định dạng chuỗi "kiểu cũ" thay đổi một chút nếu bạn muốn thực hiện nhiều thay thế trong một chuỗi duy nhất. Bởi vì toán tử "%" chỉ nhận một đối số, bạn cần phải bọc phía bên phải trong một tupe như sau:
Ta cũng có thể thay thế các biến giá trị trong chuỗi, nếu ta ánh xạ theo toán tử %:
Điều này làm cho các chuỗi định dạng của bạn dễ bảo trì hơn và dễ sửa đổi hơn trong tương lai. Bạn không phải lo lắng về việc đảm bảo thứ tự giá trị bạn biến vào biến khớp với thứ tự mà các biến được tham chiếu trong chuỗi định dạng. Tất nhiên, nhược điểm là kỹ thuật này đòi hỏi phải gõ nhiều hơn một chút . Chắc rằng bạn đang thắc mắc tại sao định dạng kiểu printf này được gọi là định dạng chuỗi “Old Style”. Bởi vì nó được thay thế về mặt công nghệ bởi định dạng “New Style” mà chúng ta sẽ nói trong phần tiếp theo. Tuy nhiên, mặc dù định dạng "Old Style" đã không còn được chú trọng, nhưng nó vẫn không bị ngừng sử dụng. Nó vẫn được hỗ trợ trong các phiên bản của Python.New StylePython 3 đã giới thiệu một cách mới để thực hiện định dạng chuỗi mà sau này cũng được chuyển tiếp sang Python 2.7. Định dạng chuỗi “New Style” này loại bỏ cú pháp đặc biệt
Ngoài ra cách này còn có các điểm mạnh như sau:
Trong Python 3, định dạng chuỗi “kiểu mới” này được ưu tiên hơn là định dạng kiểu 2. String Interpolation / f-Strings (Python 3.6+)Python 3.6 đã thêm một cách tiếp cận định dạng chuỗi mới được gọi là formatted string literals hoặc f-Strings. Cách định dạng chuỗi mới này cho phép bạn sử dụng các biểu thức Python được nhúng bên trong chuỗi. Dưới đây là một ví dụ đơn giản để bạn có cảm nhận về tính năng này:
3. Template stringsĐây là một công cụ khác để định dạng chuỗi trong Python: chuỗi mẫu (template strings. Đó là một cơ chế đơn giản hơn và ít mạnh mẽ hơn, nhưng trong một số trường hợp, đây có thể là chính xác những gì bạn đang tìm kiếm. Hãy xem một ví dụ đơn giản:
Một sự khác biệt nữa là các chuỗi mẫu không cho phép Format specifiers . Khi sử dụng biến để người dùng nhập vào ta có một số lưu ý như sau:
Vậy chúng ta nên sử dụng phương pháp nào ?Nếu chuỗi định dạng của bạn do người dùng cung cấp, hãy sử dụng Template strings (#4) để tránh các vấn đề bảo mật. Nếu không, hãy sử dụng f-Strings (# 3) nếu bạn đang sử dụng Python 3.6+ và str.format (# 2) nếu bạn không sử dụng python 3.6+. Để dễ hiểu hơn ta có biểu đồ như bên dưới.
Tổng kếtTrong bài này, chúng ta đã đi qua các phép toán làm việc chuỗi trong python cũng như các cách xử lý định dạng chuỗi. Mỗi cách định dạng chuỗi đều có ưu nhược điểm riêng. Trong bài tiếp theo, ta sẽ tập trung vào biểu thức chính quy trong python. Tạm biệt và hẹn gặp các bạn vào các bài viết tiếp theo. Tài liệu tham khảohttps://app.datacamp.com/learn/courses/regular-expressions-in-python https://www.geeksforgeeks.org/string-formatting-in-python/ https://realpython.com/python-string-formatting/ |