如何用Python过滤API中的值?

2024-09-30 04:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

在python3中,我编写了这个程序来读取巴西政府合同的API(http://compras.dados.gov.br

我的目的是访问contracts模块(http://compras.dados.gov.br/docs/contratos/v1/contratos.html

示例:http://compras.dados.gov.br/contratos/v1/contratos.html?uasg=153229

JSON示例:http://compras.dados.gov.br/contratos/v1/contratos.json?uasg=153229

我为“cnpjèU Contrata”领域制定了一个计划:

import requests
import pandas as pd

url = 'http://compras.dados.gov.br'
cnpj = '92781335000102' #code example

url = '{0}/contratos/v1/contratos.json?cnpj_contratada={1}'.format(url, cnpj)

r = requests.get(url)
contracts = r.json()['_embedded']['contratos']

df = pd.DataFrame(contracts)
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 41 entries, 0 to 40
Data columns (total 18 columns):
_links                    41 non-null object
cnpj_contratada           41 non-null object
codigo_contrato           41 non-null int64
data_assinatura           41 non-null object
data_inicio_vigencia      41 non-null object
data_termino_vigencia     41 non-null object
fundamento_legal          41 non-null object
identificador             41 non-null object
licitacao_associada       41 non-null object
modalidade_licitacao      41 non-null int64
numero                    41 non-null int64
numero_aditivo            5 non-null float64
numero_aviso_licitacao    41 non-null int64
numero_processo           41 non-null object
objeto                    41 non-null object
origem_licitacao          41 non-null object
uasg                      41 non-null int64
valor_inicial             41 non-null float64
dtypes: float64(2), int64(5), object(11)
memory usage: 5.8+ KB

我现在打算使用“英勇”领域。我只想访问大于等于100000000.0的合同值

url = 'http://compras.dados.gov.br'
valor = 100000000.0
url = '{0}/contratos/v1/contratos.json?valor_inicial>={1}'.format(url, valor)
r = requests.get(url)
print(r)
<Response [500]>

如果我把“>;=”url的位置在逻辑上出错。请问,有人知道如何过滤这些值吗


Tags: brjsonhttpurlobjectnullgovv1
2条回答

valor_inicial_min参数传递给url怎么样

http://compras.dados.gov.br/contratos/v1/contratos.json?valor_inicial_min=100000000.0

根据API文档http://compras.dados.gov.br/docs/contratos/v1/contratos.html,您可以使用valor_inicial_min实现此目的

你能试试这个吗

url = 'http://compras.dados.gov.br'
valor = 100000000.0
url = '{0}/contratos/v1/contratos.json?valor_inicial_min={1}'.format(url, valor)
r = requests.get(url)
print(r)

希望有帮助

相关问题 更多 >

    热门问题