我正在使用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的新手。
非常感谢你!
答案 0 :(得分:0)
简单的方法是跟踪匹配的名称,如果已经打印则不打印它们:
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'
答案 1 :(得分:0)
如果我正确地解释了您对该问题的评论(但我不是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],但应该已经输出您要存储的信息。
HTH!