我想檢查多個字串是否在一個名為“str_a”的較大字串中。以下是我目前擁有的并且有效。
animals = {"giraffe", "tiger"}
str_a = "A giraffe is taller than a tiger."
if "giraffe" in str_a or "tiger" in f:
print ("T")
else:
print ("F")
但是,我想以更簡潔的方式表示 if 陳述句,我認為 set.intersection 可以幫助我實作這一點。我用 set.intersection 嘗試了以下操作,它列印出“F”而不是“T”——我不知道為什么。對此的任何指導將不勝感激!
animals = {"giraffe", "tiger"}
str_a = "A giraffe is taller than a tiger."
matches = animals.intersection(str_a)
if matches:
print ("T")
else:
print ("F")
uj5u.com熱心網友回復:
您應該改用any:
if any(animal in str_a for animal in animals):
print('T')
else:
print('F'
uj5u.com熱心網友回復:
要將字串轉換為一組單詞,請使用.split():
>>> set(str_a.split())
{'giraffe', 'A', 'taller', 'tiger.', 'is', 'than', 'a'}
你現在可以做一個集合交集:
>>> set(str_a.split())&animals
{'giraffe'}
請注意,'tiger.'與 不一樣'tiger'。要去除標點符號,您可以使用集合推導:
>>> {w.rstrip(',.:') for w in str_a.split()}
{'giraffe', 'tiger', 'A', 'taller', 'is', 'than', 'a'}
然后兩者都會找到:
>>> {w.rstrip(',.:') for w in str_a.split()}&animals
{'giraffe', 'tiger'}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/407614.html
標籤:
