我有一个清单:
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
答案 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是您已经过滤的新列表