python代码的输出是每行一个字符

时间:2019-03-01 02:16:22

标签: python python-3.x for-loop

我是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 :(得分:0)

问题是响应中有两种标题,有些是纯字符串"Germain the wizard",有些是字符串['Joe Strong, the boy wizard : or, The mysteries of magic exposed /']的数组。在这种特殊情况下,似乎所有列表的长度都为1,但我想并非总是如此。为了说明您可能需要做的事情,我在这里添加了一个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应该返回可预测的类型,否则在用户方面看起来很混乱。