Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Các hàm hỗ trợ tính Delta (Difflib) trong Python

Để tính delta (sự khác biệt), ta nên dùng module difflib của Python. Module này có các lớp và hàm khác nhau để so sánh chuỗi (sequences). Nó có thể so sánh file, file HTML, v.v.

Để dùng module này, cần nhập module difflib trong mã Python.

import difflib

Một số lớp và hàm của module difflib:

Lớp difflib.SequenceMatcher

Lớp này dùng để so sánh hai chuỗi (sequence) bất kỳ kiểu. Nó có các phương thức khác nhau. Một số phương thức:

  • set_seqs(a, b) – Thiết lập hai sequence sẽ so sánh. Nó tính toán và cache thông tin chi tiết về file thứ hai. Vì vậy, khi so khớp nhiều file, ta nên thiết lập sequence đầu tiên lặp lại.
  • set_seq1(a) – Thiết lập sequence đầu tiên.
  • set_seq2(b) – Thiết lập sequence thứ hai.
  • find_longest_match(alo, ahi, blo, bhi) – Tìm khối khớp dài nhất trong khoảng alo-ahi cho sequence 1 và blo-bhi cho sequence 2.
  • get_matching_blocks() – Tìm danh sách các sequence khớp theo thứ tự giảm dần.
  • ratio() – Tìm tỷ lệ tương đồng của các sequence dưới dạng float.

Mã ví dụ

import difflib

myStr1 = 'Python Programming'
myStr2 = 'Python Standard Library'

seq_match = difflib.SequenceMatcher(lambda x: x==' ', myStr1, myStr2)
print("Tỷ lệ khớp sequence: " + str(round(seq_match.ratio(), 3)))

for match_block in seq_match.get_matching_blocks():
    print(match_block)

Kết quả

Tỷ lệ khớp sequence: 0.488
Match(a=0, b=0, size=7)
Match(a=8, b=13, size=1)
Match(a=11, b=19, size=2)
Match(a=18, b=23, size=0)