如果python在JSON中找不到某个值,则在list中追加一些内容

p8h8hvxi  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(106)

我正在用Python编写一个脚本,用Google API搜索竞争对手。
让你看看它是如何工作的:
首先,我发出一个请求,并将数据保存在一个Json:

# make the http GET request to Scale SERP
    api_result = requests.get('https://api.scaleserp.com/search', params)

    # Save data inside Json
    dados = api_result.json()

然后创建一些列表来获取职位、头衔、域名等,然后我创建一个循环,将竞争对手的职位附加到我的列表中:

# Create the lists
    sPositions = []
    sDomains = []
    sUrls = []
    sTitles = []
    sDescription = []
    sType = []

    # Create loop for to look for information about competitors
    for sCompetitors in dados['organic_results']:
        sPositions.append(sCompetitors['position'])
        sDomains.append(sCompetitors['domain'])
        sUrls.append(sCompetitors['link'])
        sTitles.append(sCompetitors['title'])
        sDescription.append(sCompetitors['snippet'])
        sType.append(sCompetitors['type'])

问题是,不是我的Json的每个括号都有相同的值。其中一些括号没有“domain”值。所以我需要类似于“当没有”domain“值时,将”no domain“附加到sDomains列表。
如果有人能帮忙我很高兴。
谢谢!

j2cgzkjk

j2cgzkjk1#

您应该使用dict的get方法,这样您就可以在密钥不存在的情况下设置默认值:

for sCompetitors in dados['organic_results']:
    sPositions.append(sCompetitors.get('position', 'no position'))
    sDomains.append(sCompetitors.get('domain', 'no domain'))
    sUrls.append(sCompetitors.get('link', 'no link'))
    sTitles.append(sCompetitors.get('title', 'no title'))
    sDescription.append(sCompetitors.get('snippet', 'no snippet'))
    sType.append(sCompetitors.get('type', 'no type'))

相关问题