在Python中匹配行

0 投票
2 回答
769 浏览
提问于 2025-04-16 20:36

我需要在一个文本文件中查找一些字符串,并想要返回匹配的那一行。假设我有一个二维数组,内容如下:

[['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])]

撰写回答