python - 从数组的元素中查找所有匹配的单词,保留这些单词,但删除不包含这些单词的元素

标签 python python-3.x

我正在尝试删除数组/json 中不包含字符串中所有单词的所有元素。例如:

要查找的单词:世界坚持

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)]

关于python - 从数组的元素中查找所有匹配的单词,保留这些单词,但删除不包含这些单词的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61693263/

相关文章:

python 两个变量 - 找出哪个最接近零

python - 如何将 myString 分配给 bash shell 中导入的 Python 函数?

python - Selenium Webdriver 未单击 Href 链接

python - 使用正则表达式Python根据模式提取部分字符串

python - Pydev 和 *.pyc 文件

python - 无法通过迭代器设置数组值

python - 使用pika,是否可以读取rabbitmq绑定(bind)参数?

python - 使用 Python 抓取 Javascript 创建的动态内容

Mac 上的 Python 3 : ModuleNotFoundError: No module named 'mglearn'

python - 使用 context_processors 将字典传递给所有模板