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

Python调用Foursquare API拼接URL时触发tuple与str拼接TypeError如何解决

问题原因
  • 变量类型错误:你定义的ll1到ll4都是元组类型,Python中逗号分隔的多个未加括号的默认值会被识别为元组,元组无法直接和字符串拼接,触发了对应TypeError。
  • 接口参数使用错误:Foursquare的venues/search接口的ll参数仅支持传入单个经纬度字符串,格式为纬度,经度,不支持直接传入多组经纬度。
  • 语法错误:一是URL拼接时出现+ll1+ +ll2的连续加号写法,不符合Python语法;二是make_request函数下的代码没有正确缩进,运行时会触发缩进错误。
解决方案

单点位查询

如果仅需要查询单个点位的周边场所,选择一组经纬度转为符合要求的字符串即可,修正后代码如下:

import requests
import json

payload = {}
headers = {}
# 经纬度格式为字符串:"纬度,经度"
ll = "18.036442,42.492103"

def make_request(payload, headers, ll):
    # 用f-string拼接URL更清晰不易出错
    url = f"https://api.foursquare.com/v2/venues/search?client_id=VFFCWVM5UPLGNOS3IAQHQB5LLZBIRYZTGUYW40JHKSEMM0BR&client_secret=PCF41XEGDNVIZSZT5ULESYGZUTW02TVYKX5IOAEAAMF5GYP1&v=20210927&token=AEOYTHHSPVCSNNBFRT0RCH55KVRXJ1EH2XDSXPIWEWJEMEPG&ll={ll}&intent=browse&radius=10000"
    response = requests.request("GET", url, headers=headers, data=payload)
    return response.text

data = make_request(payload, headers, ll)
print(data)

多点位批量查询

如果需要查询4个点位的所有结果,可将经纬度存入列表循环发起请求:

import requests
import json

payload = {}
headers = {}
# 所有待查询的经纬度存为字符串列表
ll_list = [
    "18.036442,42.492103",
    "18.036808,42.117917",
    "18.458814,42.485903",
    "18.453989,42.115408"
]

def make_request(payload, headers, ll):
    url = f"https://api.foursquare.com/v2/venues/search?client_id=VFFCWVM5UPLGNOS3IAQHQB5LLZBIRYZTGUYW40JHKSEMM0BR&client_secret=PCF41XEGDNVIZSZT5ULESYGZUTW02TVYKX5IOAEAAMF5GYP1&v=20210927&token=AEOYTHHSPVCSNNBFRT0RCH55KVRXJ1EH2XDSXPIWEWJEMEPG&ll={ll}&intent=browse&radius=10000"
    response = requests.request("GET", url, headers=headers, data=payload)
    return response.text

# 循环查询每个点位
for idx, ll in enumerate(ll_list):
    print(f"=====第{idx+1}个点位查询结果=====")
    res = make_request(payload, headers, ll)
    print(res)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:06:03