首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查字符串是否以列表中的一个字符串结尾

检查字符串是否以列表中的一个字符串结尾
EN

Stack Overflow用户
提问于 2013-08-21 16:02:19
回答 8查看 160.6K关注 0票数 276

编写以下代码的pythonic方式是什么?

代码语言:javascript
复制
extensions = ['.mp3','.avi']
file_name = 'test.mp3'

for extension in extensions:
    if file_name.endswith(extension):
        #do stuff

我有一个模糊的记忆,for循环的显式声明可以避免,可以在if条件中编写。这是真的吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-08-21 16:03:46

虽然不是很广为人知,但str.endswith也接受元组。你不需要循环。

代码语言:javascript
复制
>>> 'test.mp3'.endswith(('.mp3', '.avi'))
True
票数 556
EN

Stack Overflow用户

发布于 2013-08-21 16:03:37

只需使用:

代码语言:javascript
复制
if file_name.endswith(tuple(extensions)):
票数 57
EN

Stack Overflow用户

发布于 2013-08-21 16:04:25

从文件中提取一个扩展名,看看它是否在扩展名集中:

代码语言:javascript
复制
>>> import os
>>> extensions = set(['.mp3','.avi'])
>>> file_name = 'test.mp3'
>>> extension = os.path.splitext(file_name)[1]
>>> extension in extensions
True

使用集合,因为在集合中查找的时间复杂度是O(1) (docs)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18351951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档