Вывод JSON с использованием Python, включая нежелательные символы - PullRequest
0 голосов
/ 04 июля 2018

Я впервые использую Python для создания простого парсера JSON. Однако при печати данных JSON на консоль они включают много дополнительных скобок и других нежелательных символов. Я также использую Python 2.7.10.

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

Когда я пытаюсь изменить версию Python на 3.7.10:

enter image description here

Ответы [ 2 ]

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

Я думаю, что вы на самом деле печатаете кортеж с синтаксисом Python 2 print, а символ u является флагом Unicode ( Что именно делают строковые флаги "u" и "r", и что является необработанным строковые литералы? ).

Также в Python 3 вы не могли использовать urllib2, но должны были бы использовать urllib.request.

Этот код работает для меня (python 3.6.5):

import json
from urllib.request import urlopen

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


data = json.loads(source)

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)

РЕДАКТИРОВАТЬ ---------

Из изображения, которое вы разместили, похоже, что у вас установлен Python 3, но ваша usr/bin/python является символической ссылкой на usr/bin/python2.

Если вы хотите запустить python 3 по умолчанию, вы можете создать псевдоним. Проверьте эту ссылку для получения дополнительной информации https://askubuntu.com/questions/320996/how-to-make-python-program-command-execute-python-3 (должна быть действительная информация и для Mac)

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

Преобразование имени и цены в строку

print(str(name), str(price))

или использовать

name = str(item['resource']['fields']['name'])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...