Неожиданная ошибка: в Python 2.7.10 - PullRequest
0 голосов
/ 04 июля 2018

Я новичок в кодировании на Python и столкнулся с неожиданной ошибкой в ​​моем коде. Любая помощь с этим будет высоко ценится

import json
from urllib2 import urlopen

response = urlopen("https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json")
source = response.read()

# print(source)

data = json.loads(source)

# print(json.dumps(data, indent=2))

usd_rates = dict()

for item in data['list']['resources']:
    name = item['resource']['fields']['name']
    price = item['resource']['fields']['price']
    usd_rates[name] = price
    print name, price

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Используйте get для получения значения из json / dict и используйте проверку None.

    import json
    from urllib2 import urlopen

    response = urlopen("https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json")
    source = response.read()

    # print(source)

    data = json.loads(source)

    # print(json.dumps(data, indent=2))

    usd_rates = dict()

    for item in data['list']['resources']:
        name = item.get('resource').get('fields').get('name')
        price = item.get('resource').get('fields').get('price')
        if name is not None:
            usd_rates[name] = price
            print name, price
0 голосов
/ 04 июля 2018

Вы получаете ошибку, потому что нет тега 'name' в 'resource'> 'fields'.

Вы можете добавить проверку, если вы не получите тег 'name' всегда:

name = item['resource']['fields'].get('name', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...