2016-11-08 123 views
1

可以說我有兩個字符串。如何在兩個文檔中提取不匹配的文本

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

這是一個非常簡單的腳本。但我希望它給你想法如何做:

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 
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 
相關問題