You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的jq库过滤Spotify API JSON提取name字段遇类型错误求助

解决Python中jq模块调用报错:TypeError: 'module' object is not callable

我完全懂你遇到的坑了——你直接把jq模块当成函数来调用,这就是报错的核心原因!jq是一个Python模块本身,并不是可直接调用的对象,得用它提供的正确方法来编译和执行jq表达式才行。

下面是修正后的完整代码,帮你顺利从Spotify API响应中提取name字段并保存到文件:

步骤1:正确使用jq模块的编译方法

首先要通过jq.compile()来编译你的jq查询表达式,之后再对响应数据执行transform操作。这里分两种常见场景处理:

场景1:处理已解析的JSON对象(Python字典)

import requests
import json
import jq

headers = {
    # 记得在这里填入你的Spotify API授权头,比如"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}

# 请求Spotify API
r = requests.get('https://api.spotify.com/v1/albums/70yMNdgyIj9SrQXFmdJKx9', headers=headers)
r.raise_for_status()  # 确保请求没有出错

# 把响应文本解析成Python字典
album_data = json.loads(r.text)

# 编译jq表达式并提取name字段
compiled_jq = jq.compile('.name')
album_name = compiled_jq.transform(album_data)

# 保存结果到文件
with open('album_name.txt', 'w', encoding='utf-8') as f:
    f.write(album_name)

print(f"提取的专辑名:{album_name},已成功保存到文件")

场景2:直接处理原始JSON文本(无需提前解析)

如果不想提前解析JSON,也可以直接用响应的原始文本,只需要在transform方法里加上text=True参数:

import requests
import jq

headers = {
    # 填入你的Spotify API授权头
}

r = requests.get('https://api.spotify.com/v1/albums/70yMNdgyIj9SrQXFmdJKx9', headers=headers)
r.raise_for_status()

# 直接处理原始JSON文本
compiled_jq = jq.compile('.name')
album_name = compiled_jq.transform(r.text, text=True)

# 保存到文件
with open('album_name.txt', 'w', encoding='utf-8') as f:
    f.write(album_name)

额外小提示

你之前写的jq(".[name]")是错误写法,而且表达式也可以简化成.name,和.[name]的效果完全一致。

内容的提问来源于stack exchange,提问作者JasperK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:58:38