如何检查字符串是否包含 Python 列表中的元素

新手上路,请多包涵

我有这样的事情:

 extensionsToCheck = ['.pdf', '.doc', '.xls']

for extension in extensionsToCheck:
    if extension in url_string:
        print(url_string)

我想知道在 Python 中执行此操作的更优雅的方法是什么(不使用 for 循环)?我在想这样的事情(比如来自 C/C++),但它没有用:

 if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)

编辑:我有点被迫解释这与下面标记为潜在重复的问题有何不同(所以我猜它不会被关闭)。

不同之处在于,我想检查一个字符串是否是某个字符串列表的一部分,而另一个问题是检查一个字符串列表中的字符串是否是另一个字符串的子字符串。当您在线寻找答案恕我直言时,类似但不完全相同,语义很重要。这两个问题实际上是在寻求解决彼此相反的问题。两者的解决方案结果是相同的。

原文由 tkit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 513
2 个回答

将生成器与 any 一起使用,它会在第一个 True 上短路:

 if any(ext in url_string for ext in extensionsToCheck):
    print(url_string)

编辑: 我看到这个答案已被 OP 接受。尽管我的解决方案可能是针对他的特定问题的“足够好”的解决方案,并且是检查列表中的任何字符串是否在另一个字符串中找到的一种很好的通用方法,但请记住,这就是该解决方案所做的全部。 它不关心字符串在哪里找到,例如在字符串的结尾。如果这很重要,就像 url 的情况一样,您应该查看@Wladimir Palant 的答案,否则您可能会遇到误报。

原文由 Lauritz V. Thaulow 发布,翻译遵循 CC BY-SA 4.0 许可协议

extensionsToCheck = ('.pdf', '.doc', '.xls')

'test.doc'.endswith(extensionsToCheck)   # returns True

'test.jpg'.endswith(extensionsToCheck)   # returns False

原文由 eumiro 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题