首页 > 解决方案 > 如何从不可迭代的 json 对象中搜索特定单词

问题描述

我正在研究简历解析器。现在我正在尝试为代码添加活力。因此,让我们考虑一个文件夹中有两个简历,我正在解析它们并在我的 API 中以 json 格式返回所需的信息,如下所示。

[
  {
    "dob": [], 
    "education": [
      [
        "MCA", 
        "2009"
      ]
    ], 
    "email": "Id:abcd@gmail.com", 
    "mobile_number": "+911234567", 
    "name": "abcd", 
    "personal_website": [
      "abcd@gmail.com", 
      "http://www.arthavidhya.com", 
      "http://www.myhealthwatcher.com", 
      "http://www.i-southernworld.com/", 
      "http://www.i-chiletravel.com/"
    ], 
    "skills": [
      "Bootstrap", 
      "Javascript", 
      "Js", 
      "Jquery", 
      "Interactive", 
      "My-sql", 
      "Css", 
      "Ajax", 
      "Apache", 
      "Php", 
      "Codignator"
    ]
  }, 
  {
    "dob": [], 
    "education": [
      [
        "Btech", 
        "2018"
      ]
    ], 
    "email": "xyz@gmail.com",  
    "mobile_number": "+91987654321", 
    "name": "xyz", 
    "personal_website": [
      "xyz@gmail.com", 
      "https://github.com/xyz"
    ], 
    "skills": [
      "Sqlite", 
      "Tensorflow", 
      "C++", 
      "C", 
      "Php", 
      "Android", 
      "Mysql", 
      "Flask", 
      "Nlp", 
      "Javascript", 
      "Css", 
      "Keras", 
      "Machine learning", 
      "Python"
    ]
  }

现在假设我将输入作为“Keras”传递,那么应该只显示第二个文件。这里可以使用什么逻辑?我在这里面临的困难是我的输出不可迭代。有人可以给我提示如何解决这个问题吗?

如果我的问题不清楚或需要更多详细信息,请发表评论。

标签: python-3.x

解决方案


我认为你可以做这样的事情

def function1(json_object, name):
    match = []
    for dict in json_object:
        for key, value in dict.items():
            if (isinstance(value, str) and value == name) or (isinstance(value, list) and name in value):
                match.append(dict)
    return match


def main():
    print(json.dumps(function1(DATA, "Keras"), indent=2))

基本上,我们正在检查 in 的值dict是否为stringorlist并尝试与字符串或列表项匹配。

由您决定使其不区分大小写或您想要的任何更改


推荐阅读