You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 05:06:03