Соответствующие строки в Python - PullRequest
0 голосов
/ 30 июня 2011

Мне нужно сопоставить некоторую строку в текстовом файле и получить возврат совпадающей строки.Допустим, у меня есть строка в 2D-массиве следующим образом:

[['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.

, тогда я должен получить всю строку с пометкой строки соответствия.Для 1D-массива работает следующий код:

def search(word, sentences):
    return[i for i in sentences if word in i]

Для вышеуказанного 2D-массива, как поступить?

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

Как насчет этого:

def search(sentences, words):
  return [s for s in sentences if all([w in s for w in words])]
1 голос
/ 30 июня 2011

Это должно работать:

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...