问题:
计划:
from difflib import SequenceMatcher
def difWord(s1, s2):
m = len(s1)
n = len(s2)
if abs(m - n) > 1:
return false
count = 0
correct = 0
i = 0
j = 0
while i < m and j < n:
if s1[i] != s2[j]:
count+=1
if count==1:
return true
def seqMatch(a,b):
rat = SequenceMatcher(None,a,b).ratio()
if rat==1 :
print("Exact Match!")
else :
print(rat*100)
splitted1 = a.split()
splitted2 = b.split()
c=0
for x,y in splitted1.iteritems(),splitted2.iteritems() :
if difWord(x,y) :
c+=1;
per = (count*100)/4
print(per)
if __name__ == "__main__":
a = "He is a boy"
b = "She is a girl"
c = "He is a boy"
seqMatch(a,b)
错误:
Traceback (most recent call last):
File "C:\Users\eidmash\Documents\Demo-Project\Day0.py", line 59, in <module>
seqMatch(a,c)
File "C:\Users\eidmash\Documents\Demo-Project\Day0.py", line 43, in seqMatch
for x,y in splitted1.iteritems(),splitted2.iteritems() :
AttributeError:'list'对象没有属性'iteritems'
答案 0 :(得分:1)
尝试
for x,y in zip(splitted1,splitted2)
答案 1 :(得分:1)
根据你的追溯,错误在行:
for x,y in splitted1.iteritems(),splitted2.iteritems():
方法str.split()
返回一个列表,因此它不是一个提供iteritems
函数的字典。但是,您可以在zip
函数的帮助下一次遍历两个列表。将该行修改为:
for x, y in zip(splitted1, splitted2):
否则,如果不使用zip
函数将两个列表的项捆绑在一起,Python会将其解释为迭代两个恰好是两个列表的项,从而产生它们用于for循环(如果列表本身没有正好两个项目,实际上会导致错误,因为它们将被解压缩到x
和y
),这不是你想要的。