So sánh 2 đoạn văn bản python năm 2024

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.

So sánh bằng Website

Nế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/

So sánh 2 đoạn văn bản python năm 2024

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:

  • Download plugin tại link (Lưu ý chọn bản 32bit hoặc 64bit phù hợp với máy tính của bạn): https://github.com/pnedev/compare-plugin/releases/tag/v2.0.0_npp7.7
  • Giải nén sau đó copy vào thư mục plugins của Notepad++
  • Khởi động lại Notepad++

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ường

Trong 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():

print("Chuỗi giống nhau (không phân biệt hoa thường)")  
else:
print("Chuỗi khác nhau")  
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():

print("Chuỗi giống nhau (không phân biệt hoa thường)")  
else:
print("Chuỗi khác nhau")  

  • Xem thêm: Upper() trong Python.
  • Xem thêm: Lower() trong Python.

So sánh lớn nhỏ

Sử dụng các toán tử so sánh

Chú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ánh

Khá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ỗi

Python cung cấp nhiều phương thức để so sánh chuỗi. Dưới đây là một số ví dụ:

  1. str.startswith() và str.endswith(): Để kiểm tra xem một chuỗi có bắt đầu hoặc kết thúc bằng một chuỗi con cụ thể hay không. print('abc' != 'abc')
    
    
    
    print('abc' != 'def')
    
    
    3
  2. str.find() và str.rfind(): Để tìm vị trí đầu tiên hoặc vị trí cuối cùng của một chuỗi con trong chuỗi gốc. print('abc' != 'abc')
    
    
    
    print('abc' != 'def')
    
    
    4
  3. str.count(): Để đếm số lần xuất hiện của một chuỗi con trong chuỗi gốc. print('abc' != 'abc')
    
    
    
    print('abc' != 'def')
    
    
    5
  4. str.isalpha() và str.isdigit(): Để kiểm tra xem chuỗi chỉ chứa ký tự chữ cái hoặc chữ số hay không. print('abc' != 'abc')
    
    
    
    print('abc' != 'def')
    
    
    6

So sánh khớp một phần

Chú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

  • Xem thêm : Xử lý file trong Python

Tổng kết

Trê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 Link

https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/thao-tac-voi-chuoi-string-trong-python/so-sanh-chuoi-trong-python/