web-dev-qa-db-ja.com

文字列のリストで完全一致を検索

これは非常に新しいので、我慢してください...

事前定義された単語のリストを取得しました

_checklist = ['A','FOO']
_

line.split()の単語リストは次のようになります

_words = ['fAr', 'near', 'A']
_

checklistwordsと完全に一致する必要があるため、「A」のみが見つかります。

_if checklist[0] in words:
_

それはうまくいかなかったので、私はここで見つけたいくつかの提案を試しました:

_if re.search(r'\b'checklist[0]'\b', line): 
_

役に立たないのは、どうやらそのようなリストオブジェクトを探すことができないからです...これについて何か助けはありますか?

5
origamisven

これにより、完全一致のリストが表示されます。

matches = [c for c in checklist if c in words]

これは次と同じです:

matches = []
for c in checklist:
  if c in words:
    matches.append(c)
6
pushkin

セットを使用すると、リストを反復処理するよりもはるかに高速になります。

checklist = ['A', 'FOO']
words = ['fAr', 'near', 'A']
matches = set(checklist).intersection(set(words))
print(matches)  # {'A'}
10
binarysubstrate

セットはあなたのニーズを満たします。セットにはissubsetメソッドがあります。例は次のようなものです。

checklist = ['A','FOO']
words = ['fAr', 'near', 'A']

print set(checklist).issubset(set(words))

2つのリストにコメント要素がある場合にのみテストが必要な場合は、intersectionメソッドに変更できます。

1
Xiaoqi Chu

これがあなたのために働くかどうか私に知らせてください、

In [67]: test = re.match(r"(.*?)A(.*?)$", "CAT")

[68]の場合:test.group(2)

Out [68]: 'T'

[69]の場合:test.group()

Out [69]: 'CAT'

[70]の場合:test.group(1)

Out [70]: 'C'

のパターンが一致しない場合、テストオブジェクトは存在しません。

0
NHMPlus