匹配字符串中的任意位置,而不使用常规exp模块

时间:2014-06-12 14:32:47

标签: python

我正在尝试匹配列表中的字符串。如果输入的字符串存在于字符串中的任何位置,搜索已完成,我想返回True。我知道,它可以是一个使用re.search,但我试图在不使用正则表达式模块的情况下这样做。我想尽可能简单地做到这一点。

一个简单的例子可能是:

drinks = ['cola_with_ice', 'icetea', 'lemonade', 'coffee']

if 'cola_with_ice' in drinks:
    print 'Requested drink or a variant of it exists'

但是,我希望我的代码返回True,例如,即使是' cola'输入:

if 'cola' in drinks:
    ...

我想知道是否可能。我想,可以做,可能是使用通配符等......

2 个答案:

答案 0 :(得分:2)

使用anygenerator expression

>>> drinks = ['cola_with_ice', 'icetea', 'lemonade', 'coffee']
>>> any('cola' in drink for drink in drinks)
True
>>> any('apple' in drink for drink in drinks)
False

答案 1 :(得分:2)

在您的示例中,drinks是一个列表,您正在搜索列表中字符串的子字符串,因此您必须遍历列表(可能使用生成器表达式),如下所示:< / p>

drinks = ['cola_with_ice', 'icetea', 'lemonade', 'coffee']
if any('cola' in x for x in drinks):
    # your code