일부 패턴 일치를 수행하고 문자열의 일부가 문자열 목록에 나타나는지 확인하려고합니다. 이 같은 이렇게 뭔가 :일치하는 항목이 일치하는 경우
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
를 사용하여 일치에 돌아왔다. 반복 가능에서 첫 번째 항목을 얻을 수있는 가장 좋은 방법은 무엇의
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'])
가능한 복제 [: 당신은 당신이 패턴을 찾을거야 확실하지 않으면
StopIteration
예외에 대해 보호해야합니다 조건 일치?] (http://stackoverflow.com/questions/2361426/what-is-the-best-way-to-get-the-first-item-from-aniterable-matching-a-condition) –