假设我有两个字符串。
a ='我是山姆。我爱下厨。'
b ='我是山姆。我以前经常喝酒。'
我正在使用以下方法计算他们的相似度得分:
from difflib import SequenceMatcher
s = SequenceMatcher(lambda x: x == " ",a,b)
print s.ratio()
现在我想在两个字符串中打印不匹配的句子。喜欢这个
a ='我喜欢烹饪。'
b ='我以前经常喝酒。'
我可以用什么模块或方法来做这个建议?我在difflib https://pymotw.com/2/difflib/中看到了一个模块但是在这里它用(+, - ,!,...)打印我不希望以那种格式输出。
答案 0 :(得分:0)
这是一个非常简单的脚本。但我希望它能让你了解如何做到:
a = 'I am Sam. I love cooking.'
b = 'I am sam. I used to drink a lot.'
a= a.split('.')
b=b.split('.')
ca=len(a)
cb=len(b)
if ca>cb:l=cb
else :l=ca
c=0
while c<l:
if a[c].upper() == b[c].upper():pass
else:print b[c]+'.'
c=c+1
答案 1 :(得分:0)
使用difflib
。您可以轻松地对difflib.Differ
的输出进行后处理,以去除每个单元的前两个字符,并将它们转换为您想要的任何格式。或者,您可以使用SequenceMatcher.get_matching_blocks
返回的路线,并生成自己的输出。
这是你怎么做的。如果这不是您想要的,编辑您的问题,以提供一个不那么简单的比较示例和您需要的输出格式。
differ = difflib.Differ()
for line in differ.compare(list1, list2):
if line.startswith("-"):
print("a="+line[2:])
elif line.startswith("+"):
print("b="+line[2:])
# else just ignore the line