显示来自 2 个单独 JSON 文件的 JSON 数据 Discord PY

Posted

技术标签:

【中文标题】显示来自 2 个单独 JSON 文件的 JSON 数据 Discord PY【英文标题】:Display JSON data from 2 separate JSON files Discord PY 【发布时间】:2019-07-25 07:36:58 【问题描述】:

我有 2 个单独的 JSON 文件,一个存储用户 ID 和“现金”,另一个存储用户 ID 和“城市”。我存储在单独的 JSON 文件中的原因是为了以防出错,它只会丢失部分数据。

在我的排行榜上,我试图显示用户拥有的现金金额以及他们来自哪个城市。现在,代码给了我一个关键错误:

File "c:\Users\test\Desktop\testclone\TESTCLONE.py", line 2411, in on_message msg += '0. <@!1> 2 Dollars\n\n'.format(number +1, user, cash[user].get('dollars', 0)) + '\nCity: ****'.format(homecity[user].get('city',0)) KeyError: '244410964693221377'

此外,我尝试仅将城市显示为嵌入内容,我敢肯定,即使我没有收到密钥错误,也没有抓住与现金最多的用户相关的城市。如果 JSON 文件“cash”也不存储城市,是否可以做我想做的事?

try:
    with open("homecity.json") as fp:
        homecity = json.load(fp)
except Exception:
    homecity = 

def save_homecity():
    with open("homecity.json", "w+") as fp:
        json.dump(homecity, fp, sort_keys=True, indent=4)

def add_city(user: discord.User, city: str):
    id = user.id
    if id not in homecity:
        homecity[id] = 
    homecity[id]["city"] = homecity[id].get("city", "") + city
    print(" is now in ".format(user.name, homecity[id]["city"]))
    save_homecity()

def get_city(user: discord.User):
    id = user.id    
    if id in homecity:
        return homecity[id].get("city", 0)
    return 0

try:
    with open("cash.json") as fp:
        cash = json.load(fp)
except Exception:
    cash = 

def save_cash():
    with open("cash.json", "w+") as fp:
        json.dump(cash, fp, sort_keys=True, indent=4)

def add_dollars(user: discord.User, dollars: int):
    id = user.id
    if id not in cash:
        cash[id] = 
    cash[id]["dollars"] = cash[id].get("dollars", 0) + dollars
    print(" now has  dollars".format(user.name, cash[id]["dollars"]))
    save_cash()

def get_dollars(user: discord.User):
    id = user.id
    if id in cash:
        return cash[id].get("dollars", 0)
    return 0

        if message.content.startswith('!lb cash'):
                cash_leaderboard = sorted(cash, key=lambda x : cash[x].get('dollars', 0), reverse=True)
                msg = ''
                for number, user in enumerate(cash_leaderboard) and enumerate(city_leaderboard):
                    msg += '. <@!>  Dollars | ****\n\n'.format(number +1, user, cash[user].get('dollars', 0), homecity[user].get('city',0))
                    if number == 10:
                        break
                    else:
                        number += 1

                    embed = discord.Embed(
                    title="TOP LEADERBOARD\nLeaders:",
                    color=0x24d7cf,
                    description=msg
                )
                    embed.set_author(name="BOT", icon_url="")
                    embed.set_thumbnail(url="")
                    embed.set_footer(text="BOT", icon_url="")

                await client.send_message(message.channel, embed=embed)

【问题讨论】:

【参考方案1】:

在我的大脑煎完之后,我意识到我一直都知道我的问题的答案。我变了

msg += '0. &lt;@!1&gt; 2 Dollars\n\n'\n\n'.format(number +1, user, cash[user].get('dollars', 0)) + '\nCity:, ****'.format(homecity[user].get('city',0))

msg += '. &lt;@!&gt; Dollars | ****\n\n'.format(number +1, user, cash[user].get('dollars', 0), homecity[user].get('city',0))

【讨论】:

以上是关于显示来自 2 个单独 JSON 文件的 JSON 数据 Discord PY的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 中的第二个视图不会显示来自 JSON 的解析数据

如何使用 jq 合并来自 2 个文件的 2 个 JSON 对象?

如何使用 jQuery 显示来自 JSON 的多个数组?

如何在单独的 UITableviews 上显示 JSON 文件的内容?

在 iOS 中显示来自 JSON 的 wordpress 帖子

如何将来自一个 JSON 请求的数据用于第二个 JSON 请求?