在抓取RSS
Feed中,我不希望将重复的项目添加到我的列表中。问题是我的if title not in mylist
行未检测到某些重复项,因为它们略有不同。尽管如此,这两个新闻项目基本相同。看看这两个。
"Kom igjen, norsk ungdom, de eldre trenger oss!"
和
"Kom igjen norsk ungdom, de eldre trenger oss"
如您所见,第一个在Kom igjen
之后有逗号而第二个没有逗号,并且在结尾处有一个感叹号。
由于没有其他唯一ID使单个项目唯一,我不知道如何检测上述重复项。
答案 0 :(得分:4)
Python有一个SequenceMatcher内置:
from difflib import SequenceMatcher
SequenceMatcher(None, "Hello you!", "Hello you").ratio()
0.9473684210526315
SequenceMatcher(None, "Apple", "Orange").ratio()
0.18181818181818182
所以你可以循环所有并将比率与某个阈值进行比较。
答案 1 :(得分:1)
您可以在将新闻添加到列表中之前使用str.translate
方法来移除标点符号:
>>> s1.translate(None, string.punctuation)
'Kom igjen norsk ungdom de eldre trenger oss'
在这种情况下,您可以根据自己的字母比较文本。
在python 3中,你可以这样做:
>>> s1.translate(dict.fromkeys(map(ord,string.punctuation),None))
'Kom igjen norsk ungdom de eldre trenger oss'