【发布时间】:2021-05-11 05:38:50
【问题描述】:
下面是我的代码,我在位置变量中使用了经纬度坐标,并通过坐标字符串将其附加到 URL。因为我有 CSV 文件,其中包含许多位置的纬度和经度坐标,然后调用该 CSV 文件作为此 API 的输入(需要身份验证)。 如何在此代码中输入 CSV 文件而不是位置变量?
import requests
import pprint
locations = [(13.84, -12.57), (12.21, -14.69)]
coordinates_str = ','.join(map(lambda a: ' '.join(f'{f:.3f}' for f in a), locations))
# Replace "poi-settings" with the endpoint you would like to call.
URL = f'https://ubiconnect-eu.ubimet.com:8090/pinpoint-data?coordinates={coordinates_str}'
TOKEN = 'TOKEN KEY'
# Create session object that can be used for all requests.
session = requests.Session()
session.headers['Authorization'] = 'Token {token}'.format(token=TOKEN)
# Send GET request to UBIconnect.
res = session.get(URL)
res.raise_for_status()
# Decode JSON response.
poi_info = res.json()
pprint.pprint(poi_info, indent=2, compact=True)
然后我尝试了这种方式:代替坐标str我做了这个
import requests
import pprint
import pandas as pd
df = pd.read_csv(r'E:\route_points.csv')
print(df)
# Replace "poi-settings" with the endpoint you would like to call.
URL = f'https://ubiconnect-eu.ubimet.com:8090/pinpoint-data?'
TOKEN = 'API TOKEN'
params= {'coordinates':(df)}
# Create session object that can be used for all requests.
session = requests.Session()
session.headers['Authorization'] = 'Token {token}'.format(token=TOKEN)
# Send GET request to UBIconnect.
res = session.get(URL, params= params)
res.raise_for_status()
# Decode JSON response.
poi_info = res.json()
pprint.pprint(poi_info, indent=2, compact=True)
还是不行。
从文档调用 API 所需的格式为:
# Replace "poi-settings" with the endpoint you would like to call.
URL = 'https://ubiconnect-eu.ubimet.com:8090/poi-settings'
TOKEN = '<YOUR TOKEN GOES HERE>'
所以我用 pinpoint-data 替换了 poi-settings
URL = 'https://ubiconnect-eu.ubimet.com:8090/pinpoint-data?coordinates=longitude<space<latitude'
例如:我把一个坐标集放到API URL中
URL = 'https://ubiconnect-eu.ubimet.com:8090/pinpoint-data?coordinates=132.85 12.84'
然后通过上面的 URL 我得到那个位置的天气数据。
【问题讨论】:
-
这能回答你的问题吗? Import CSV file as a pandas DataFrame
-
您使用的 API 的文档在哪里?
-
我无法共享文档,因为它需要用户名和密码。您需要文件中的哪些信息,我会在这里找到并发布?
-
API调用所需的格式
-
所以 URL 格式需要是这样的: URL ='ubiconnect-eu.ubimet.com:8090/pinpoint-data?coordinates=longitude
标签: python api csv latitude-longitude weatherdata