更好的方法来写这个if _ in _语句?

时间:2014-05-31 22:03:46

标签: python python-2.7

如果我想确保某个字符/单词在字符串中,我该怎么做?就像在这个例子中(这是一个非常丑陋),我想知道一个字符串是否包含一个数字。

n = "I have 3 cats"

if "1" in n or "2" in n or "3" in n or "4" in n \
   or "5" in n or "6" in n or "7" in n or "8" in n \
   or "9" in n or "0" in n:
    print "This string contains a number"
else:
    print "This string does not contain a number"

这是一种非常缓慢而混乱的方式来了解字符串是否包含数字。那么我怎么能让它沿着这些方向做点什么:

n = "I have 3 cats"
myList = [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]

if '''Any of the strings in myList''' in n:
    print "This string contains a number"
else:
    print "This string does not contain a number"

我已经浏览了Stack Overflow这个答案而无法找到它,所以如果这是重复的话我很抱歉!我无法想象我是第一个有这个问题的人吗?

BTW这不是重复的"如何查找字符串是否包含数字" ,因为在这种情况下我只是使用数字示例。我只是想知道是否有办法找到一个字符串是否包含列表中的任何字符串。例如,我想找一个字符串是否包含任何这些字符" / \ _ _()等等。" 这不重复

2 个答案:

答案 0 :(得分:3)

您可以使用any

if any(d in n for d in myList):

或者,使用str实例方法isdigit让您的目标更加清晰:

if any(c.isdigit() for c in n):

答案 1 :(得分:2)

最简单,最有效的方法是将您想要查找的内容放入一个集合中,并检查与该集合的交集。 (set.intersection的参数本身不必是一个集合。)

digits = set("0123456789")
if digits.intersection(myList):
    print "Yep"