python正则表达式在列表中找到匹配

时间:2015-12-18 11:41:28

标签: python regex loops conditional-statements

我有一个清单:

chain_views = [u'x|frequency|x:y|||cbase', 
               u'x|frequency|x:y||weights_UK18|cbase', 
               u'x|frequency||y|weights_UK18|c%']

我想根据上面的列表检查下面的条件

if el.startswith('x|frequency|') and el.split('|')[4]!='' and el.split('|')[3]=='y':

如何在正则表达式中转换上述条件?

现在我正在循环检查这个,我认为正则表达式可能是更好的选择吗?

for el in chain.views:

    if el.startswith('x|frequency|') and el.split('|')[4]!='' and el.split('|')[3]=='y':
        weighted_views = True
        break
    else:
        weighted_views = False

return weighted_views

2 个答案:

答案 0 :(得分:1)

由于字符串看起来像一种CSV,我更喜欢使用split函数并完全避免使用正则表达式。

for el in chain_views:
    a0, a1, a2, a3, a4, a5 = el.split('|')  # give better names
    if a0 == 'x' and a1 == 'frequency' and a3 == 'y' and a4:
        return True
return False

答案 1 :(得分:1)

如果正则表达式确实让生活更轻松

我希望这对你有用

导入重新

x = [

u'x|frequency|x:y|||cbase',
u'x|frequency|x:y||weights_UK18|cbase',
u'x|frequency||y|weights_UK18|c%'

t =" - " .join(x)+' - '

x = re.findall(r'((?:x \ | \ w + \ |(?:x:y)?\ |)(?!\ |)[^ - ] *)+&# 39;,t)

其中x是您已经过滤的新列表