【问题标题】:Telegram bot in pythonpython中的电报机器人
【发布时间】:2018-02-27 04:41:34
【问题描述】:

目前,我正在使用 python 3 在电报上做一个货币转换器机器人。

def on_callback_query(msg):
    query_id, from_id, query_data = telepot.glance(msg, flavor='callback_query')
    print('Callback Query:', query_id, from_id, query_data)

url = "http://api.fixer.io/latest?base=SGD&symbols="
symbols = query_data
response = requests.get(url + symbols)
data = response.json()
print(data)

if(query_data == 'SGD'):
    bot.sendMessage(from_id, data)

elif (query_data == 'EUR'):
    bot.sendMessage(from_id, data)

这里的数据将在我的电报聊天中输出 {'rates': {'EUR': 0.62177}, 'base': 'SGD', 'date': '2017-09-18'}。有没有美化输出,即去掉大括号和引号?

【问题讨论】:

  • 试图使用 split 内置函数,但是 'dict' object has no attribute 'split' 发现错误

标签: json python-3.x bots telegram


【解决方案1】:

几乎肯定有一种比我做的方法更有效的方法,但它确实有效。

str(output).replace("{","").replace("}","").replace("'","")

【讨论】:

    【解决方案2】:

    这种格式命名为 JSON,您可以将其解析为对象并使用自定义格式简单地打印它。 见this

    【讨论】:

      【解决方案3】:

      结果是 JSON 格式,然后转换为字典,您可以从字典中提取每个元素并使用它来创建更好的格式。 你可以写成任何你喜欢的格式,这里有一个例子

      if(query_data == 'SGD'):
          result = "Rates in EUR: {}\nBase: {}\nDate: {}".format(data['rates']['EUR'], data['base'], data['date'])
          bot.sendMessage(from_id, result)
      
      if(query_data == 'EUR'):
          result = "Rates in SGD: {}\nBase: {}\nDate: {}".format(data['rates']['SGD'], data['base'], data['date'])
          bot.sendMessage(from_id, result)
      

      【讨论】:

        猜你喜欢
        • 2020-10-28
        • 1970-01-01
        • 2017-08-18
        • 2022-01-01
        • 2021-02-21
        • 1970-01-01
        • 2021-02-02
        • 1970-01-01
        • 2017-09-11
        相关资源
        最近更新 更多