我有一個包含名稱的串列,我想獲取包含我的字串的某些部分的串列元素
例如:
names = ["David Benj Jacob", "Alex"]
因此,如果我使用“David Jacob”進行搜索,那么如何獲得串列“David Benj Jacob”的第一個元素?
我試過 如果名字中有“大衛雅各布”
uj5u.com熱心網友回復:
您需要檢查子字串的所有部分是否都在任何名稱中
names = ["David Benj Jacob", "Alex"]
substr = "David Jacob"
valid_names = []
for name in names:
if all(part in name for part in substr.split()):
valid_names.append(name)
uj5u.com熱心網友回復:
嘗試將查詢字串拆分為子字串,并檢查該子字串是否存在于names陣列中的專案中。
names = ["David Benj Jacob", "Alex"]
def search(names: list[str], query: str) -> str:
# Split words
split = query.split(" ")
# Iterate over all names
for item in names:
# Iterate over all words from 'query'
for word in split:
# Check if word is present
if word in item:
return item
queried = search(names, "David Jacob")
uj5u.com熱心網友回復:
我得出了與@jprebys 類似的結論,但我撰寫了一個基本函式,它回傳names給定搜索字串的串列中匹配項的索引。
names = ["David Benj Jacob", "Alex"]
def find_name(search: str) -> int:
for name in names:
if all(n in name for n in search.split()):
return names.index(name)
uj5u.com熱心網友回復:
names = ['David benj Jacob', 'John Legend']
wanted_name = "David Jacob"
first_name, last_name = wanted_name.split(' ')
for name in names:
if first_name in names or last_name in names:
print(name)
或在 python 中使用regex和函式。filter就像這里提供的答案建議一樣:正則運算式:在串列
中搜索,類似于:
names = ['David benj Jacob', 'John Legend']
wanted_name = "David Jacob"
first_name, last_name = wanted_name.split(' ')
pat = re.compile(fr"{first_name}.*?{last_name}")
wanted_names = list(filter(pat.match,names))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/521876.html
標籤:Python细绳列表
