我有一本这样的字典
#: key: name, value: separator
namespaces = { 'INBOX.': '.',
'INBOX/Trash': '/',
'INBOX$Trash$Send': '$' }
如果用户输入是INBOX.Trash
,匹配应该是INBOX/Trash
如果用户输入是INBOX.Trash123
,匹配应该是INBOX.
如果用户输入是INBOX.Trash.Foo
,匹配应该是INBOX/Trash
如果用户输入是INBOX.Foo
,匹配应该是INBOX.
如果用户输入是INBOX.Tras
,匹配应该是INBOX.
(用户输入的分隔符也是已知的)
所以我需要在分隔符拆分中找到最接近的匹配。什么好主意吗?
def closest_match(path):
if len(path) >= 6:
separator = path[5]
split_path = path.split(separator)
else:
split_path = path
namespaces = {'INBOX.': ['INBOX'],
'INBOX/Trash': ['INBOX', 'Trash'],
'INBOX$Trash$Send': ['INBOX', 'Trash', 'Send']}
matches = [k for k, v in namespaces.items() if all(sub in split_path for sub in v)]
return max(matches, key=len)
closest_match('INBOX.Trash123')