【问题标题】:Searching through index number in a .txt file (JSON format) in Python code在 Python 代码中搜索 .txt 文件(JSON 格式)中的索引号
【发布时间】:2016-10-23 05:16:54
【问题描述】:

我是 python 的新手,在编程上有一些困难。我必须在 data.txt 文件中搜索索引号,然后根据用户的输入删除整个项目。我的代码如下:

    if option == 'd':
        if 'name' in open('data.txt').read():
            ind = int (input ("Menu item number to delete: "))
            with open ('data.txt') as data_file:
                data = json.load(data_file)
            if ind in data[ind]:
                del data[ind]
                json.dump(data, open('data.txt', 'w'))
                data_file.close()
                print ('Menu item deleted.\n')
            else:
                print ('No such items exist')
                main()
            main()
        else:
            print ('There are no menu items saved')
            main()

例如如果用户输入 3,则第 3 项将被删除。代码工作正常,但我还必须找到用户输入的索引是否存在于文件中,并且我通过命令 if ind in data[ind] 遇到错误:错误如下所示:

文件“D:/R/043/N.py”,第 41 行,在 inputSomething 中 如果 ind 在数据 [ind] 中: IndexError: 列表索引超出范围

我们将不胜感激。

【问题讨论】:

    标签: python list dictionary indexing


    【解决方案1】:

    编辑:

    根据您发布的 json,您正在加载一个数组而不是一个由键索引的对象,因此如果您想从数组中删除特定项目,您首先需要检查它是否至少包含选择的项目数,然后删除该项目 - 像这样:

    编辑:奇怪的是,您希望您的用户为菜单中的第一项输入“0”,这样的事情会起作用:

            if len(data)-1 >= ind:
                del data[ind]
    

    【讨论】:

    • 这样做也无济于事。我已经尝试过了,之后代码找不到列表中已经存在的项目
    • 你能发布你正在加载的 json 的摘录吗?
    • [ { “名称”:“巨无霸”,“卡路里”:540,“脂肪”:29,“蛋白质”:25,“碳水化合物”:45,“钠”:1040,“胆固醇”:75 },{“名称”:“Whopper”,“卡路里”:760,“脂肪”:47,“蛋白质”:33,“碳水化合物”:53,“钠”:1410,“胆固醇”:100 },{“名称”:“冰淇淋”,​​“卡路里”:760,“脂肪”:47,“蛋白质”:33,“碳水化合物”:53,“钠”:1410,“胆固醇”:100 },{“名称”:“麦当劳”,“卡路里”:760,“脂肪”:47,“蛋白质”:33,“碳水化合物”:53,“钠”:1410,“胆固醇”:100 } ]
    • 它工作正常,除了一个问题。假设我的字典中有 0,1,2 个项目,当我输入 3 时,它会删除第二个项目,而它应该打印出不存在这样的项目。
    • 老师要求用'0'引用第一个元素
    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多