Вывод кода Python - один символ на строку - PullRequest
0 голосов
/ 01 марта 2019

Я новичок в Python, и у меня возникли проблемы с очисткой API.Я хочу получить список названий книг, используя этот код:

r = requests.get('https://api.dp.la/v2/items?q=magic+AND+wizard&api_key=09a0efa145eaa3c80f6acf7c3b14b588')

data = json.loads(r.text)

for doc in data["docs"]:
    for title in doc["sourceResource"]["title"]:
        print (title)

, который работает для извлечения названий, но большинство (не все) заголовки выводятся по одному символу на строку.Я попытался добавить .splitlines (), но это не решает проблему.Любой совет будет оценен!

1 Ответ

0 голосов
/ 01 марта 2019

Проблема в том, что у вас есть два типа заголовка в ответе, некоторые из них - простые строки "Germain the wizard", а некоторые - массивы строк ['Joe Strong, the boy wizard : or, The mysteries of magic exposed /'].Кажется, что в этом конкретном случае все списки имеют длину один, но я думаю, что это не всегда так.Чтобы проиллюстрировать, что вам может понадобиться, я добавил join вместо того, чтобы просто взять title[0].

import requests
import json

r = requests.get('https://api.dp.la/v2/items?q=magic+AND+wizard&api_key=09a0efa145eaa3c80f6acf7c3b14b588')

data = json.loads(r.text)

for doc in data["docs"]:
  title = doc["sourceResource"]["title"]
  if isinstance(title, list):
    print(" ".join(title))
  else:
    print(title)

По моему мнению, этого никогда не должно происходить, API должен возвращать предсказуемые типы, в противном случае он выглядитгрязный на стороне пользователей.

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