从python中的json输出中选择少量

时间:2018-08-19 07:20:03

标签: python json bots telegram chatbot

这是我当前的代码

def info_coin(bot, update, args):
    if args[-1] == '1':
        coin_list = args[:-1]
        opt = 1
    else:
        coin_list = args
        opt = 0
    for coin_name in coin_list:
        coin_call =requests.get("https://api.coingecko.com/api/v3/coins/" + str(coin_name)).json()
        coin_isd = coin_call ['description']['en']
        print(coin_isd)
        update.message.reply_text(coin_isd)

我想进一步选择['en'],仅从其中选择一定数量的文本。原因是我的信息要发送。

2 个答案:

答案 0 :(得分:0)

如果coinCall['description']['en']是字符串,则可以对其进行切片。

假设您要将字符串限制为10个字符,则可以将代码更新为以下内容

def infoCoin(bot,update,args,max_string=10):
    if args[-1] == '1':
        coin_list=args[:-1]
        opt=1
    else:
        coin_list=args
        opt=0
    for coinName in coin_list:
        coinCall =requests.get("https://api.coingecko.com/api/v3/coins/"+str(coinName)).json()
        coinIsd = coinCall ['description']['en'][:max_string]
        print(coinIsd)
        update.message.reply_text(coinIsd)

请注意,如果字符串的长度小于max_string,则只需获取整个字符串即可。

In [873]: x='string'

In [874]: x[:10]
Out[874]: 'string'

答案 1 :(得分:0)

您可以将变量传递给函数,并确定需要从词典中提取多少个字符。像下面的示例一样,我要传递100,因此仅会提取前100个字符。 尝试以下代码:

import requests


def infoCoin(args, total_string_length_to_send):
        coinCall =requests.get("https://api.coingecko.com/api/v3/coins/"+args).json()
        print(coinCall['description']['en'][:total_string_length_to_send])

infoCoin('bitcoin', 100)