Python SequenceMatcher:只记录一次不匹配?

Python SequenceMatcher:只记录一次不匹配?,python,if-statement,sequencematcher,Python,If Statement,Sequencematcher,我正在使用SequenceMatcher在一组文本中查找一组单词。我遇到的问题是,当它没有找到匹配项时,我需要记录,但每次记录一次。如果我尝试If语句,每次与另一个单词的比较失败时,它都会给出一个结果 names=[JOHN, LARRY, PETER, MARY] files = [path or link] for file in files: for name in names: if SequenceMatcher(None, name, file).r

我正在使用
SequenceMatcher
在一组文本中查找一组单词。我遇到的问题是,当它没有找到匹配项时,我需要记录,但每次记录一次。如果我尝试If语句,每次与另一个单词的比较失败时,它都会给出一个结果

names=[JOHN, LARRY, PETER, MARY]
files = [path or link]

  for file in files: 
     for name in names:
        if SequenceMatcher(None, name, file).ratio() > .9:
             do something
        else:
             print name + 'not found'
我还尝试了
re.match
re.find
,我遇到了同样的问题。 上面的代码是我正在做的一个简单版本。我也是Python新手。
多谢各位

最简单的方法是跟踪匹配的名称,如果已经打印,则不打印:

seen = {}
for file in files:
    for name in names:
        if SequenceMatcher(None, name, file).ratio() > .9:
            do something
        elif name not in seen:
            seen[name] = 0
            print name + 'not found'

如果我正确地解释了您对问题的评论(但我不是100%确定!),这可能说明了您可以遵循的一般机制:

>>> text = 'If JOHN would be married to PETER, then MARY would probably be unhappy'
>>> names = ['JOHN', 'LARRY', 'PETER', 'MARY']
>>> [text.find(name) for name in names]
[3, -1, 28, 40]  #This list will be always long as the names list
我所说的“您可以遵循的机制”是指
SequenceMatcher
(我用内置方法
find
)不仅应该作为测试工作[True | False],而且应该已经输出您想要存储的信息


你能澄清一下你的问题吗?如果一个单词被发现不止一次,输出应该是什么?如果只有一次呢?如果根本找不到呢?是的。如果找到一个名字,则输出的是紧跟在名字后面的关于这个人的一些信息。每个人在一篇文章中只被提及一次,但不是每个人都在每一篇文章中。如果一个人不在给定的文本中,我想保留一个记录。它之所以如此重要,是因为我正在创建
csv
文件,其中每列都是一个名称。这有用吗?谢谢这成功了!非常感谢。尽管我将
seen=[]
放在了第一个
for
和第二个
for
之间,这样每个文件都会重置。