在python中查找分隔符中最接近的匹配项



我有一本这样的字典

#: 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')

最新更新