ในการคำนวณเดลต้า เราควรใช้โมดูล difflib ของหลาม โมดูลนี้มีคลาสและฟังก์ชันที่แตกต่างกันเพื่อเปรียบเทียบลำดับ สามารถเปรียบเทียบไฟล์ ไฟล์ HTML ฯลฯ
ในการใช้โมดูลนี้ เราจำเป็นต้องนำเข้าโมดูล difflib ในโค้ดหลาม
import difflib
คลาสและฟังก์ชันบางอย่างของโมดูล difflib
คลาส (difflib.SequenceMatcher) -
คลาสนี้ใช้เพื่อเปรียบเทียบสองลำดับของประเภทใดก็ได้ มันมีวิธีการที่แตกต่างกัน วิธีการเหล่านี้บางส่วนมีลักษณะเช่นนี้ −
-
set_seqs(a, b) − ตั้งค่าไฟล์ลำดับที่จะเปรียบเทียบ มันคำนวณและแคชข้อมูลรายละเอียดเกี่ยวกับไฟล์ที่สอง ดังนั้นสำหรับการจับคู่หลายไฟล์ เราควรตั้งค่าลำดับแรกซ้ำๆ
-
set_seq1(ก) − ตั้งค่าลำดับแรกที่จะเปรียบเทียบ
-
set_seq2(2) − ตั้งค่าลำดับที่สองที่จะเปรียบเทียบ
-
find_longest_match(alo, ahi, blo, bhi) - ค้นหาบล็อกที่ตรงกันที่ยาวที่สุดในช่วง alo ถึง ahi สำหรับลำดับแรกและ blo to bhi สำหรับลำดับที่สอง
-
get_matching_blocks() − ค้นหารายการลำดับที่ตรงกันในลำดับจากมากไปน้อย
-
อัตราส่วน() − ค้นหาอัตราส่วนของความคล้ายคลึงของลำดับเป็นค่าทศนิยม
โค้ดตัวอย่าง
import difflib myStr1 = 'Python Programming' myStr2 = 'Python Standard Library' seq_match = difflib.SequenceMatcher(lambda x: x==' ', myStr1, myStr2) print("The ratio of the sequence matching is: " + str(round(seq_match.ratio(), 3))) for match_block in seq_match.get_matching_blocks(): print(match_block)
ผลลัพธ์
The ratio of the sequence matching is: 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)