[英]Comparing amount of characters in strings in Python
在猜詞游戲中,我如何能夠記錄猜想和答案之間的字符數差異? 例如。 要猜的單詞是“答案”,猜的是“答案”,記為3個字符的差異。 我只是在努力理解字符串到int的轉換,如果那是我應該走的路...
那么簡單地使用difflib.ndiff()
方法呢? 我認為此功能可以正常工作:
import difflib
def check_diff(a, b):
diff = [i[0] for i in difflib.ndiff(a, b) if i[0] != ' ']
nums = abs(diff.count('+') - diff.count('-'))
return (nums if nums != 0 else diff.count('+'))
演示:
>>> import difflib
>>> def check_diff(a, b):
... diff = [i[0] for i in difflib.ndiff(a, b) if i[0] != ' ']
... nums = abs(diff.count('+') - diff.count('-'))
... return (nums if nums != 0 else diff.count('+'))
...
>>>
>>> check_diff('cat', 'dog')
3
>>> check_diff('bat', 'tab')
2
>>> check_diff('bet', 'abet')
1
>>> check_diff('ABCXYZ', 'ABCOXYZ')
1
>>> check_diff('ABCXYZ', 'ABXYZ')
1
>>> check_diff('ABCXYZ', 'ABXZ')
2
>>>
正如@KevinGuan在評論中所說,您可以使用diiflib。 這是一個示例函數:
def diff(a ,b):
sm = difflib.SequenceMatcher(None, a, b)
match_size = sm.find_longest_match(0, len(a), 0, len(b)).size
return max(len(a), len(b)) - match_size
print diff('cat', 'dog')
print diff('bat', 'tab')
print diff('answer', 'answering')
print diff('bet', 'abet')
輸出為:
3
2
3
1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.