使用python进行re.match('列表中的任何项')

时间:2014-05-21 15:36:15

标签: python regex

我正在尝试推广用于分析三种特定植物的python脚本,以便能够分析任何种类的物种。我有一段代码:

dump=open('dump')
for i in dump:
  if re.match('CON|VEN|PLE',i):
     print i

我想说:

dump=open('dump')
list = ['CON','PLE','VEN']
for i in dump:
  if re.match('any item from my list',i): # How can I ask for item from a list that match?
     print i

因为我必须多次使用来自不同列表的许多不同ID重现此代码。

2 个答案:

答案 0 :(得分:4)

i是您文件中的一行,因此为了清晰起见,我将其称为line

 if set(line.split()).intersection(list_of_words)

如果你真的想用正则表达式

 if re.find("|".join(sorted(list_of_words,key=len,reverse=True)),line)

应该有用......

答案 1 :(得分:2)

你可以把它转过来 - 而不是re.match(any...)做:

if any(re.match(item, i) for item in lst):

请注意,list是一个错误的变量名称,因为它会影响内置函数。