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

标签 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() 但这并不能解决问题。任何建议将不胜感激!

最佳答案

问题是响应中有两种类型的标题,一些是纯字符串 "Germain the Wizard" ,另一些是字符串数组 ['Joe Strong, the boy向导:或者,魔法的奥秘暴露了/']。似乎在这种特殊情况下,所有列表的长度都是一,但我想情况并非总是如此。为了说明您可能需要执行的操作,我在此处添加了 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 应该返回可预测的类型,否则在用户方面看起来会很困惑。

关于python - python代码的输出是每行一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54937021/

相关文章:

javascript - JavaScript 5 中 for 和 foreach 的区别

python - 列表理解嵌套在字典中的列表

python - 使用 matplotlib 绘制日期时间输出

python - Python 中的 Curl 等价物

python - Pandas:如果时间戳格式相同,则比较价格(for 循环)

Python 瓶颈;确定文件比较功能的最佳 block 大小

java - void方法中使用的void方法的组成? ( java )

python - 如何将键映射到多个值到数据框列?

javascript - XMLHttpRequest 没有将 POST 数据发送到 Django 服务器

bash - 为什么 `for i in {1..10}` 与 `for ((i=1; i<=10; i++))` 不同?