簡體   English   中英

比較Python中字符串的字符數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM