パターン一致がいくつか行われていて、文字列の一部が文字列のリストに含まれているかどうかを確認する必要があります。このような 行う何か:一致すると一致するものが返される
if any(x in line for x in aListOfValues):
は、それがラインに加えて、xの値を返すことは可能ですか?
パターン一致がいくつか行われていて、文字列の一部が文字列のリストに含まれているかどうかを確認する必要があります。このような 行う何か:一致すると一致するものが返される
if any(x in line for x in aListOfValues):
は、それがラインに加えて、xの値を返すことは可能ですか?
next()
を使用して、類似のジェネレータから次の一致を取得することができます。False
がデフォルトです。これは、最初にの一致を返すだけであることに注意してください。
match = next((x for x in aListOfValues if x in line), False)
また、非常に簡単な解決策は、単にループにあなたの現在の文を分解し、x
を含むタプルと同様に行を返すことである可能性があります。
def find(line, aListOfValues):
for x in aListOfValues:
if x in line:
return x, line
return False, line
あなたは、最初のアイテムを消費することによってそれを行うことができnext
を使用して一致に戻りました。あなたはパターンを見つけるつもりだわからない場合は、StopIteration
例外から保護しなければならないことに注意してください:[の
try:
print (next(x for x in aListOfValues if x in line))
except StopIteration:
print("Not found")
aListOfValues = ["hello", "hallo"]
line = "hello world"
#classic one
res = [x for x in aListOfValues if x in line]
print res
>>['hello']
# back to your case
if any(x in line for x in aListOfValues):
print set(aListOfValues) & set(line.split())
>> set(['hello'])
match = set(aListOfValues) & set(line.split())
if match: #replace any query
print match
>> set(['hello'])
が重複する可能性のiterableから最初の項目を取得するための最良の方法は何ですか条件にマッチするか?](http://stackoverflow.com/questions/2361426/what-is-the-best-way-to-get-the-first-item-from-aniterable-matching-a-condition) –