在Python中匹配行
我需要在一个文本文件中查找一些字符串,并想要返回匹配的那一行。假设我有一个二维数组,内容如下:
[['Shoo-Be-Doo-Be-Doo-Da-Day', 'Henry Cosby'],
['My Cherie Amour (song)', 'Stevie Wonder'],
["Signed, Sealed, Delivered I'm Yours", 'Stevie Wonder]]
这样我就可以在文本文件中搜索这些字符串,比如:['Shoo-Be-Doo-Be-Doo-Da-Day', 'Henry Cosby']
['', ''] ['', ''].... 在file.txt文件中,行的格式是这样的:
abcd Shoo-Be-Doo-Be-Doo-Da-Day skakk gkdka kkhhf Henry Cosby.
gfigka Stevie Wonder hfkhf hghhg fghh My Cherie Amour.
fhsgs hlghhg Henry Cosby Shoo-Be-Doo-Be-Doo-Da-Day gkgkl.
然后我应该能返回整行,并标记出匹配的字符串。对于一维数组,下面的代码可以正常工作:
def search(word, sentences):
return[i for i in sentences if word in i]
那么对于上面的二维数组,我该怎么做呢?
2 个回答
1
这个应该可以正常运行:
def search(patterns, sentences):
for sentence in sentences:
if any(all(p in sentence for p in pattern) for pattern in patterns):
yield sentence
matched = list(search(['Shoo-Be-Doo-Be-Doo-Da-Day', 'Henry Cosby'],
sentences))
2
这样怎么样:
def search(sentences, words):
return [s for s in sentences if all([w in s for w in words])]