22 lines
529 B
Python
22 lines
529 B
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
'''
|
|
一些通用函数
|
|
'''
|
|
|
|
import difflib
|
|
|
|
def GetEditDistance(str1, str2):
|
|
leven_cost = 0
|
|
s = difflib.SequenceMatcher(None, str1, str2)
|
|
for tag, i1, i2, j1, j2 in s.get_opcodes():
|
|
#print('{:7} a[{}: {}] --> b[{}: {}] {} --> {}'.format(tag, i1, i2, j1, j2, str1[i1: i2], str2[j1: j2]))
|
|
|
|
if tag == 'replace':
|
|
leven_cost += max(i2-i1, j2-j1)
|
|
elif tag == 'insert':
|
|
leven_cost += (j2-j1)
|
|
elif tag == 'delete':
|
|
leven_cost += (i2-i1)
|
|
return leven_cost |