SequenceMatcher: запись не совпадает только один раз? - PullRequest
1 голос
/ 22 ноября 2011

Я использую 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. Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Если я правильно истолковываю ваш комментарий к вопросу (но я не уверен на 100%!), Это может проиллюстрировать общий механизм, которым вы можете следовать:follow "заключается в том, что SequenceMatcher (который я подставил встроенным методом find) должен не только работать как тест [True | False], но уже выводить информацию, которую вы хотите сохранить.

HTH!

0 голосов
/ 22 ноября 2011

Простой способ - отслеживать совпадающие имена и не печатать их, если они уже напечатаны:

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...