1

いくつかのリストがあり、それらから要素をフィルター処理したいと考えています。リストは次のとおりです。

list1 = ['Little Mary had a lamb', 'the horse is black', 'Mary had a cat']
list2 = ['The horse is white', 'Mary had a dog', 'The horse is hungry']
listn = ...

関連する単語または表現を知っていると仮定します。次の例では、メアリーまたは馬です。これらの項目に検索された用語または表現が含まれている場合、他のリストから抽出される新しいリストを取得したいと思います。例:

listMary = ['Little Mary had a lamb', 'Mary had a cat', 'Mary had a dog'] 
listHorse = ['the horse is black', 'The horse is white', 'The horse is hungry']
listn = ...

私のデータがより複雑であることを心配しないでください ;)

正規表現モジュールを使用する必要があることはわかっていますが、この場合の方法を見つけることができません。ここでスタックオーバーフローでいくつかの検索を試みましたが、問題を明確に定式化する方法がわからないため、有用なものが見つかりませんでした。

4

4 に答える 4

2

それは次のようなものでしょうか:

>>> a = ['Little Mary had a lamb', 'the horse is black', 'Mary had a cat']
>>> b = ['The horse is white', 'Mary had a dog', 'The horse is hungry']
>>> [sent for sent in a+b if 'Mary' in sent]
['Little Mary had a lamb', 'Mary had a cat', 'Mary had a dog']

または、正規表現を使用したい場合:

>>> import re
>>> [sent for sent in a+b if re.search("horse", sent)]
['the horse is black', 'The horse is white', 'The horse is hungry']
于 2012-06-20T07:25:52.167 に答える
0

ユーザーが内蔵filter した機能は、高速で効率的です。

def f(x): 
    return x % 2 != 0 and x % 3 != 0

filter(f, range(2, 25))

したがって、ここでdef fは1つの引数を取り、一致を作成してtrue falseを返し、結果リストが作成されます。

ありがとうございました

于 2012-06-20T06:58:36.097 に答える
0

リスト内包の条件節を使用します。

[x for x in L if regex.search(x)]
于 2012-06-20T06:32:07.150 に答える
0

正規表現モジュールは必ずしも必要ではありません。

word = 'horse'
result = []
for l in [list1, list2, list3]:
    for sentence in l:
        if word in sentence:
            result.append(sentence)
于 2012-06-20T06:34:12.193 に答える