非常新的,所以请耐心等待......
我有一个预定义的单词列表
checklist = ['A','FOO']
以及来自line.split()
的单词列表,看起来像这样
words = ['fAr', 'near', 'A']
我需要checklist
中words
的完全匹配,所以我只找到'A':
if checklist[0] in words:
这没用,所以我尝试了一些我在这里找到的建议:
if re.search(r'\b'checklist[0]'\b', line):
无济于事,因为我显然无法找到那样的列表对象...对此有何帮助?
答案 0 :(得分:9)
使用集合比遍历列表要快得多。
checklist = ['A', 'FOO']
words = ['fAr', 'near', 'A']
matches = set(checklist).intersection(set(words))
print(matches) # {'A'}
答案 1 :(得分:6)
这将为您提供完整匹配的列表。
matches = [c for c in checklist if c in words]
与以下内容相同:
matches = []
for c in checklist:
if c in words:
matches.append(c)
答案 2 :(得分:1)
套装将满足您的需求。有issubset
方法集。示例如下:
checklist = ['A','FOO']
words = ['fAr', 'near', 'A']
print set(checklist).issubset(set(words))
如果您只需要测试两个列表中是否有注释元素,则可以更改为intersection
方法。
答案 3 :(得分:0)
让我知道这是否适合您,
In [67]: test = re.match(r"(.*?)A(.*?)$", "CAT")
在[68]中:test.group(2)
出[68]:' T'
在[69]中:test.group()
Out [69]:' CAT'
在[70]中:test.group(1)
Out [70]:' C'
如果模式in不匹配,则测试对象不存在。