Dù bạn là một lập trình viên, quản lý hệ thống, hay một nhân viên văn phòng thì chắc ai cũng đã từng so sánh sự khác nhau của 2 file code, script hoặc đoạn văn bản nào đó. Bài viết này sẽ hướng dẫn cho các bạn một số cách để so sánh nội dung 2 file một cách nhanh chóng. Show
So sánh bằng WebsiteNếu có một máy tính kết nối internet, bạn có thể so sánh nội dung 2 file tại địa chỉ: https://www.diffchecker.com/ Sau khi truy cập vào website trên, bạn copy nội dung 2 file/văn bản muốn so sánh vào ô Original Text và Changed Text, sau đó click vào button Find Difference. Kết quả sẽ được hiển thị ngay phía trên Editor DiffChecker còn có ứng dụng cài đặt trực tiếp trên máy tính tuy nhiên nó không hề miễn phí. Bạn có thể tải và dùng thử tại địa chỉ sau: https://www.diffchecker.com/desktop So sánh nội dung 2 file bằng Notepad++Notepad++ được đánh giá là một trong những chương trình chỉnh sửa source code tốt và thông dụng nhất hiện nay. Nó không chỉ cung cấp nhiều add-in có sẵn mà hỗ trợ tốt cả những plugin của bên thứ ba, giúp người dùng có thể sử dụng thêm nhiều tính năng khác. Một trong những plugin đó là Compare, với chức năng so sánh nội dung 2 file nhanh chóng và hoàn toàn miễn phí. Cài đặt plugin Compare cho Notepad++Mặc định Notepad++ không có sẵn plugin Compare, do đó các bạn cài đặt bằng cách sau:
Sử dụng pluginĐể sử dụng plugin, bạn mở 2 file cần so sánh, sao đó trên thanh menu chọn Plugins -> Compare -> Compare So sánh chuỗi bằng nhau là một phần quan trọng của xử lý dữ liệu trong Python. Để kiểm tra xem hai chuỗi có bằng nhau hay không, bạn có thể sử dụng toán tử so sánh print('abc' == 'ABC') print('abc' != 'ABC') 0. Ví dụ: print('abc' == 'abc') print('abc' == 'def') Tương tự chúng ta sử dụng toán tử so sánh khác print('abc' == 'ABC') print('abc' != 'ABC') 1 để kiểm tra hai chuỗi có khác nhau như sau: print('abc' != 'abc') print('abc' != 'def') Lưu ý, các phép so sánh chuỗi bao gồm cả so sánh đồng nhất sẽ phân biệt chữ hoa và chữ thường trong chuỗi. Nếu hai chuỗi giống nhau về ký tự nhưng khác nhau về ký tự chữ hoa chữ thường thì cũng không được coi là giống nhau. print('abc' == 'ABC') print('abc' != 'ABC') Thứ tự của các ký tự trong chuỗi cũng được xem xét khi đem đi so sánh. Nếu hai chuỗi giống nhau về ký tự nhưng khác nhau về thứ tự các ký tự trong chuỗi thì cũng không được coi là giống nhau. print('abc' == 'cab') print('abc' != 'bac') Nếu bạn muốn so sánh hai chuỗi mà không phân biết ký tự chữ thường chữ hoa trong chuỗi, hãy xem tiếp ở phần dưới đây. So sánh không phân biệt hoa thườngTrong một số trường hợp, bạn có thể muốn so sánh chuỗi mà không phân biệt hoa thường. Điều này có nghĩa rằng “Hello” và “hello” sẽ được coi là giống nhau. Để thực hiện so sánh không phân biệt hoa thường, bạn có thể chuyển đổi cả hai chuỗi về cùng một kiểu chữ cái trước khi so sánh, bằng cách sử dụng phương thức lower() hoặc upper(). Dưới đây là ví dụ sử dụng phương thức lower(): str1 = "Hello" str2 = "hello" if str1.lower() == str2.lower(): else:
Kết quả sẽ là “Chuỗi giống nhau (không phân biệt hoa thường)”.Tương tự như khi chúng ta sử dụng phương thức upper(): str1 = "Hello" str2 = "hello" if str1.upper() == str2.upper(): else:
So sánh lớn nhỏSử dụng các toán tử so sánhChúng ta sử dụng các toán tử so sánh như print('abc' == 'ABC') print('abc' != 'ABC') 2, print('abc' == 'ABC') print('abc' != 'ABC') 3, print('abc' == 'ABC') print('abc' != 'ABC') 4, print('abc' == 'ABC') print('abc' != 'ABC') 5 để tìm mối quan hệ lớn nhỏ giữa 2 chuỗi trong python. Và phần tử đầu tiên có giá trị khác nhau giữa 2 chuỗi sẽ được lấy ra để so sánh. Ví dụ: print('a' < 'b') print('aa' <= 'ab') print('abc' > 'abcd') print('abc' >= 'abcd') Nguyên lý so sánhKhác với so sánh số trong python, chúng ta không thể sử dụng trực tiếp giá trị của chuỗi để so sánh lớn nhỏ giữa chuỗi trong python. Thay vào đó, chúng ta sử dụng các điểm mã unicode (unicode code point) của các ký tự trong chuỗi để so sánh. Để kiểm tra điểm mã Unicode của một ký tự, chúng ta sử dụng tới hàm ord() trong python như sau: print(ord("a")) print(ord("b")) print(ord("A")) Khi so sánh lớn nhỏ hai ký tự đơn, chúng ta đơn giản so sánh điểm mã unicode của chúng. Ví dụ, do điểm mã unicode của ký tự a là 97 sẽ lớn hơn của ký tự A à 65 nên phép so sánh sau sẽ cho ra kết quả True: print( "a" > "A") Tuy nhiên khi so sánh 2 chuỗi ký tự với nhau, chúng ta không thể đơn thuần so sánh các điểm mã unicode của từng ký tự được. Lúc này, phép so sánh sẽ bắt đầu từ ký tự đầu tiên trong hai chuỗi, và nếu chúng giống nhau, các ký tự tiếp theo được so sánh cho tới khi xuất hiện một ký tự khác nhau đầu tiên trong hai chuỗi. Khi đó, điểm mã unicode của ký tự này sẽ đại diện cho cả chuỗi và được dùng để so sánh lớn nhỏ. Ví dụ: print( "aAaaaaa" < "aaa") print( "a" > "Aaaa") Ở ví dụ 1, ký tự khác nhau đầu tiên trong hai chuỗi là A và a, do đó mặc dù chuỗi bên trái nhiều ký tự hơn chuỗi bên phải nhưng điểm mã unicode của A lại nhỏ hơn a, do đó chuỗi bên trái sẽ nhỏ hơn chuỗi bên phải. Tương tự ở ví dụ 2, mặc dù chuỗi bên trái chỉ gồm 1 ký tự, nhưng điểm mã unicode của a lại lớn hơn A, kết quả là chuỗi bên trái sẽ lớn hơn chuỗi bên phải. Một điều đặc biệt khi so sánh lớn nhỏ giữa 2 chuỗi trong python là, các ký tự viết hoa sẽ LUÔN nhỏ hơn các ký tự chữ thường. print('abc' != 'abc') print('abc' != 'def') 0 Do đó trong trường hợp này chúng ta không cần phải dùng hàm ord() để tìm điểm mã unicode của ký tự nữa, mà có thể dùng quy luật ở trên để so sánh lớn nhỏ giữa ký tự viết thường và viết hoa trong Python. So sánh chuỗi theo từng ký tựNếu bạn cần so sánh chuỗi từng ký tự một, bạn có thể sử dụng vòng lặp và chỉ mục để duyệt qua từng ký tự trong chuỗi. Dưới đây là một ví dụ: print('abc' != 'abc') print('abc' != 'def') 1 So sánh chuỗi bằng biểu thức chính quy (Regular Expressions)Khi bạn cần thực hiện so sánh phức tạp hơn hoặc tìm kiếm chuỗi con trong chuỗi gốc dựa trên một mẫu cụ thể, bạn có thể sử dụng biểu thức chính quy (regular expressions). Python cung cấp thư viện print('abc' == 'ABC') print('abc' != 'ABC') 6 để làm việc với biểu thức chính quy. print('abc' != 'abc') print('abc' != 'def') 2 Sử dụng các phương thức so sánh chuỗiPython cung cấp nhiều phương thức để so sánh chuỗi. Dưới đây là một số ví dụ:
So sánh khớp một phầnChúng ta sử dụng các toán tử print('abc' == 'ABC') print('abc' != 'ABC') 7 và print('abc' == 'ABC') print('abc' != 'ABC') 8 để so sánh khớp một phần và kiểm tra một chuỗi có nằm trong chuỗi khác trong Python. Ví dụ để kiểm tra chuỗi x có nằm trong y hay không, chúng ta viết print('abc' == 'ABC') print('abc' != 'ABC') 9, và nếu x có nằm trong y thì kết quả True, và nếu x không nằm trong y thì kết quả False sẽ trả về. Ví dụ: print('abc' != 'abc') print('abc' != 'def') 7 Ngược lại với toán tử print('abc' == 'ABC') print('abc' != 'ABC') 7, chúng ta dùng toán tử print('abc' == 'ABC') print('abc' != 'ABC') 8 để kiểm tra một chuỗi có KHÔNG nằm trong chuỗi khác hay không. Ví dụ để kiểm tra chuỗi x có không nằm trong y hay không, chúng ta viết print('abc' == 'cab') print('abc' != 'bac') 2, và nếu x có nằm trong y thì kết quả False, và nếu x không nằm trong y thì kết quả True sẽ trả về. Ví dụ: print('abc' != 'abc') print('abc' != 'def') 8 Chúng ta hay sử dụng toán tử kiểm tra một chuỗi có nằm trong chuỗi khác trong các biểu thức điều kiện của lệnh if hoặc vòng lặp for. Ví dụ, chúng ta viết một chương trình xóa ảnh JPG hoặc PNG từ trong một thư mục. Bằng cách lấy đuôi file và kiểm tra đuôi file có chứa chuỗi JPG hoặc PNG hay không, chúng ta có thể xác định và xóa đi các file ảnh trong thư mục chỉ định như sau: print('abc' != 'abc') print('abc' != 'def') 9
Tổng kếtTrên đây Kiyoshi đã hướng dẫn bạn về cách so sánh chuỗi trong python rồi. So sánh chuỗi là một phần quan trọng trong lập trình Python và là một phần quan trọng của quá trình xử lý dữ liệu. Chúng ta đã tìm hiểu cách thực hiện so sánh bằng, so sánh không phân biệt hoa thường, và sử dụng các phương thức và phương pháp so sánh chuỗi. Việc nắm vững cách làm này giúp bạn xử lý dữ liệu chuỗi hiệu quả và thực hiện các tác vụ so sánh phức tạp hơn khi cần thiết trong ứng dụng của mình. URL Linkhttps://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/thao-tac-voi-chuoi-string-trong-python/so-sanh-chuoi-trong-python/ |