Python如何获取字符串匹配的后缀列表中对应后缀的索引
匹配后缀索引的实现方法
原生的str.endswith()方法仅返回布尔值,本身不支持返回具体匹配的后缀信息,你可以通过以下几种方式扩展实现需求:
方案1:遍历匹配(逻辑直观,适配绝大多数场景)
通过枚举后缀列表逐一校验,默认返回第一个匹配项的索引,无匹配时返回None:
def get_match_suffix_index(input_str: str, suffix_list: list) -> int | None: for index, suffix in enumerate(suffix_list): if input_str.endswith(suffix): return index return None
调用示例:
suffix_list = ['.mp3', '.avi', '.txt'] print(get_match_suffix_index('test.mp3', suffix_list)) # 输出 0 print(get_match_suffix_index('movie.avi', suffix_list)) # 输出 1 print(get_match_suffix_index('note.pdf', suffix_list)) # 输出 None
该方案的匹配顺序和原生endswith一致,如果存在多个可匹配的后缀,会优先返回列表中位置更靠前的后缀索引。
方案2:简洁单行写法
如果不需要单独封装函数,可以用生成器表达式快速实现:
suffix_list = ['.mp3', '.avi', '.txt'] input_str = 'test.avi' # 无匹配时默认返回None match_index = next((idx for idx, suf in enumerate(suffix_list) if input_str.endswith(suf)), None) print(match_index) # 输出 1
如果需要获取所有匹配的后缀索引,改用列表推导即可:
all_match_indexes = [idx for idx, suf in enumerate(suffix_list) if input_str.endswith(suf)]
内容的提问来源于stack exchange,提问作者Penguin
相关产品推荐
相关产品推荐

