比较Python中字符串中的字符数量

时间:2015-11-12 13:02:19

标签: python

在单词猜谜游戏中,我如何能够记录猜测和答案之间的字符数量的差异?例如。要猜的是'回答',猜是'回答',注意到3个字符的差异。我只是在努力理解字符串到int的转换,如果那是我应该采取的路径......

2 个答案:

答案 0 :(得分:2)

那么简单地使用这样的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
>>> 

答案 1 :(得分:1)

正如@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')&# xA; print diff('answer','answersing')
 print diff('bet','abet')
  




输出为:




  3
 2
 3
 1