字符串格式列表中的Python测试字符串

字符串格式列表中的Python测试字符串,python,regex,string,list,Python,Regex,String,List,我正在寻找一个python模块,它可以帮助测试字符串是否在格式化字符串列表中。我找不到确切的词语来解释我的问题(这可能就是我没有找到任何东西的原因),因此这里有一个例子: REGISTERED_KEYS = ( 'super_key', 'key_ending_with_anything_*', 'anything' ) is_key_registered("super_key", REGISTERED_KEYS) >> True is_key_regis

我正在寻找一个python模块,它可以帮助测试字符串是否在格式化字符串列表中。我找不到确切的词语来解释我的问题(这可能就是我没有找到任何东西的原因),因此这里有一个例子:

REGISTERED_KEYS = (
    'super_key',
    'key_ending_with_anything_*',
    'anything'
)

is_key_registered("super_key", REGISTERED_KEYS)
>> True

is_key_registered("wrong_key", REGISTERED_KEYS)
>> False

is_key_registered("key_ending_with_anything_foobar", REGISTERED_KEYS)
>> True
问题不是简单地检查字符串是否在列表中,而是允许字符串格式化。我可能不得不使用regexp,但我想知道是否有一个现有的模块可以这样做(因为这似乎是一个常见的需求)。 编辑:我的注册密钥的格式不一定是我写的格式。可以是正则表达式


谢谢

您可以浏览所有键并检查它们:

import re


def is_key_registered(key, keys):
    for _ in keys:
        if re.search(_, key):
            return True

如果要使用文件通配符,请使用适当的库来匹配文件名:


这正是正则表达式的使用案例,因此您需要的唯一模块是
re
@lejlot:
'key\u end\u with_anything.*'
不是正则表达式,而是正则表达式,不管您使用哪种语法,*或典型的正则表达式。
import fnmatch

def is_key_registered(foo, keys):
    return any(fnmatch.fnmatch(foo, key) for key in keys)