在if条件下使用re.search匹配多个字符串

时间:2015-02-20 23:04:05

标签: regex python-2.7 conditional-statements

我正在编写一个程序,根据另一个单元格中的position值从电子表格创建列表。所以我的代码看起来像

for j in xrange(1,13):
    for sheet in wb.sheets():
        for i in xrange(1,12*15):
            team=sheet.cell(i,0)
            position=sheet.cell(i,2)
            games=sheet.cell(i,23)
            if re.match(owner[j], str(team.value)) and (not re.findall('Defense' or 'K,' or 'KFG' or 'KKO', str(position.value))):
                try:
                    list.append(int(games.value))
                except ValueError:
                    list.append(0)
            else:
                pass
    print list
    list=[]

因此,当第一列中的行匹配owner而不是Defense K, KFG KKO时,此目标是附加到列表在职位栏中。

不幸的是,KKFGKKO的值都显示出来了 在我的列表中,但Defense值没有正确。我怎么能够 确保满足其他过滤标准?

作为旁注,这些位置在其他文本中也是如此 此处使用的是search(),而不是match()

1 个答案:

答案 0 :(得分:1)

“防御”是一个'truthy'值,因此结果为:

'Defense' or 'K,' or 'KFG' or 'KKO'

'Defense'

因此,您所拥有的条件与以下内容没有区别:

re.match(owner[j], str(team.value)) and (not re.findall('Defense', str(position.value)))

如果您想在正则表达式中使用替代方法,请在模式中使用|

re.match(owner[j], str(team.value)) and (not re.findall('Defense|K,|KFG|KKO', str(position.value)))