第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

discord.py:如何從 json 文件中刪除一個(gè)值?

discord.py:如何從 json 文件中刪除一個(gè)值?

慕后森 2023-03-16 15:56:22
我的代碼:@bot.command()async def delwarn(ctx, member: discord.Member = None, warnid = None):    if member:          with open('warns.json', 'r') as fcheckifthere:                checkifthere = json.load(fcheckifthere)          if f'{member.id}' in checkifthere.keys():                amount = len(checkifthere[f'{member.id}'])                if f'{warnid}' in checkifthere[f'{member.id}']:                    if not amount == 1:                        # i want to delete the value f"{warnid}"                            del checkifthere[f'{member.id}'][f'{warnid}']                          with open('warns.json', 'w+') as fcheckifthere:                              json.dump(checkifthere, fcheckifthere, sort_keys=True, indent=4)錯(cuò)誤:Traceback (most recent call last):  File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\ext\commands\bot.py", line 892, in invoke    await ctx.command.invoke(ctx)  File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\ext\commands\core.py", line 797, in invoke    await injected(*ctx.args, **ctx.kwargs)  File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\discord\ext\commands\core.py", line 92, in wrapped    raise CommandInvokeError(exc) from excdiscord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: list indices must be integers or slices, not str我想刪除特定值 f"{warnid}",但我不知道如何刪除此錯(cuò)誤。以下是 json 文件的示例:{   305354423801217025: [      0145324124,      2142141244   ]{
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

您的錯(cuò)誤在此行中,您嘗試刪除警告 ID:


del checkifthere[f'{member.id}'][f'{warnid}']

checkifthere[f'{member.id}']是一個(gè)列表,您提供的索引是一個(gè)字符串。列表索引必須是整數(shù),所以你有一個(gè)錯(cuò)誤。

刪除列表元素的最簡(jiǎn)單方法是使用list.remove(element):


checkifthere[str(member.id)].remove(warnid)

此外,您不需要f strings,您可以使用str()將整數(shù)和浮點(diǎn)數(shù)轉(zhuǎn)換為字符串。


通過一些重構(gòu),您的命令如下所示:


from discord import Member

from discord.ext import commands

from json import load, dump


@bot.command()

async def delwarn(ctx, member: Member = None, warn_id: str = None):

    if not member:

        return

    with open('warns.json', 'r') as file:

        data = load(file)

        member_id = str(member.id)

    if not member_id in data.keys():

        return

    if warn_id in data[member_id] and not len(data[member_id]) == 1:

        with open('warns.json', 'w') as file:

            data[member_id].remove(warn_id)

            dump(data, file, sort_keys=True, indent=4)


查看完整回答
反對(duì) 回復(fù) 2023-03-16
  • 1 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)