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

如何创建统计含指定搜索条件JSON记录数的Python API?

解决思路与修正代码

一、现有代码的问题

  • 函数参数technology被错误覆盖为df['Key Skills'],丢失了搜索关键词
  • 请求API时传入整列数据作为参数,不符合API接收逻辑
  • requests.get返回的Response对象没有.count()方法,无法直接统计
  • KeyError大概率是API返回的JSON结构中不存在'Key Skills'字段,或读取时未正确解析嵌套结构

二、API端实现(Flask为例)

先搭建正确的API服务,负责接收搜索关键词,读取数据后统计符合条件的记录数:

from flask import Flask, request, jsonify
import pandas as pd

app = Flask(__name__)

# 替换为你的实际数据源(可从文件/数据库读取)
data = {
    "Job ID": [1, 2, 3],
    "Key Skills": ["Python, SQL", "Java, Python", "C++, JavaScript"]
}
df = pd.DataFrame(data)

@app.route('/data', methods=['GET'])
def count_jobs_by_skill():
    # 获取请求中的搜索关键词
    skill = request.args.get('skill', '')
    if not skill:
        return jsonify({"error": "请提供搜索关键词"}), 400
    
    # 模糊匹配'Key Skills'列,类似SQL的%str%逻辑
    matching_count = df['Key Skills'].str.contains(skill, case=False, na=False).sum()
    
    return jsonify({"skill": skill, "count": int(matching_count)})

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000, debug=True)

三、客户端调用修正(Jupyter Notebook中)

修正你的调用代码,正确请求API并获取统计结果:

import requests

api_url = "http://127.0.0.1:5000/data"

def get_number_of_jobs_T(technology):
    params = {"skill": technology}
    r = requests.get(api_url, params=params)
    
    result = r.json()
    if "error" in result:
        return f"错误: {result['error']}"
    
    return f"包含技能'{technology}'的职位数量: {result['count']}"

# 调用示例
print(get_number_of_jobs_T("Python"))

四、关键知识点说明

  • 模糊搜索:用pandas.Series.str.contains()实现类似%str%的模糊匹配,case=False忽略大小写,na=False排除空值干扰
  • 参数传递:通过request.args.get()获取URL查询参数,确保参数传递逻辑正确
  • 结果统计:用.sum()统计布尔序列中True的数量,即匹配成功的记录数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:25:46