Python 从数组的一个元素中查找所有匹配的单词,保留这些单词,但删除元素';没有这些词的是什么
我试图删除数组/json中的所有元素,这些元素中没有字符串中的所有单词。例如: 要找到的话:世界坚持住Python 从数组的一个元素中查找所有匹配的单词,保留这些单词,但删除元素';没有这些词的是什么,python,python-3.x,Python,Python 3.x,我试图删除数组/json中的所有元素,这些元素中没有字符串中的所有单词。例如: 要找到的话:世界坚持住 Array [ { "title" : "Hold On World", "artist": "some guy" }, { "title" : "World, Hold On", "artist": "some guy" }, { "title" : "World Hold On
Array [
{
"title" : "Hold On World",
"artist": "some guy"
},
{
"title" : "World, Hold On",
"artist": "some guy"
},
{
"title" : "World Hold On Now",
"artist": "some guy"
},
{
"title" : "World Is Ending",
"artist": "some guy"
}
]
因此,对于这个数组,前三个元素应该被保存,但最后一个元素应该被删除,我已经尝试过这样的方法:
def removeNonMatches(data, title):
old = title.split(' ')
new = '|'.join(old)
p = re.compile(new, re.I)
for x in data:
if bool(p.search(r"\b("+p+")\b", x['title'], re.IGNORECASE)) == False:
data.remove(x)
return data
data = [
{
"title" : "Hold On World",
"artist": "some guy"
},
{
"title" : "World, Hold On",
"artist": "some guy"
},
{
"title" : "World Hold On Now",
"artist": "some guy"
},
{
"title" : "World Is Ending",
"artist": "some guy"
}
]
title = 'World Hold On'
new_data = removeNonMatches(data, title)
你可以用
data = [
{
"title" : "Hold On World",
"artist": "some guy"
},
{
"title" : "World, Hold On",
"artist": "some guy"
},
{
"title" : "World Hold On Now",
"artist": "some guy"
},
{
"title" : "World Is Ending",
"artist": "some guy"
}
]
words = ["World", "Hold", "On"]
keep = [item for item in data
if all(word in item["title"] for word in words)]
print(keep)
产生
[{'title': 'Hold On World', 'artist': 'some guy'},
{'title': 'World, Hold On', 'artist': 'some guy'},
{'title': 'World Hold On Now', 'artist': 'some guy'}]
要使用大写和小写单词,请使用
words = ["world", "hold", "on"]
keep = [item for item in data
if all(word in item["title"].lower() for word in words)]
查看
all()
。这很有效,谢谢,我得到了不同的结果,但是我认为这与调用服务器的结果有关。非常感谢。