Я удалил данные из словаря и записал данные словаря в текстовый файл и получил ошибку ключа? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть текстовый файл, который выглядит так: myFiles.txt

Dell    2015    A14523  Sam
Sony    2014    A74256  John
Acer    2018    A45656  Mark
Sony    2007    S12345  James

Я хочу удалить данные, когда в качестве входных данных я указываю индекс, поэтому я конвертирую текстовый файл в словарь. Таким образом, я получил индексы для моего текстового файла. Но когда я удаляю какие-либо данные из словаря и записываю оставшиеся данные в текстовый файл, возникает ключевая ошибка. Потому что когда я удаляю данные из словаря, индексы остаются прежними Например: Я создал 4 строки для разных ключей, то есть 1,2,3 и 4 Когда я удаляю данные из индекса 2, то словарные индексы остаются неизменными, я оставляю 1,3 и 4, и когда я переписываю данные в текстовый файл, это приводит к ключевой ошибке. Как я могу удалить данные из текстового файла. Я новичок в Python. Помогите мне решить

def deleteFunction(self):
    ownerListDic = {}
    num = 1
    with open("myFiles.txt", "r") as oy:
        for line in oy:

            li = line.strip().split()
            ownerListDic[num] = {"name": li[0], "purchase": li[
                1], "bluePlate": li[2], "owner": li[3]}
            num += 1
    # enter the record id to delete from the text file
    indexId = int(input("Enter record ID: "))
    if indexId in ownerListDic:
        # prompting to confirm the user you are going to delete
        # this data
        print(("You arev about to delete " + ''.join(ownerListDic[indexId]['name'] +
                                                     " " + ownerListDic[indexId]['purchase'] + " " + ownerListDic[indexId]["bluePlate"] + " " + ownerListDic[indexId]['owner'])) + " .")
        # ask user to delete the data
        delete = input(
            "Do you wish to delete this record (Y/N): ").upper()
        # if yes then data will delete
        if delete == "Y":
            ownerListDic.pop(indexId, None)
            num=1
            with open("myFiles.txt", 'w') as log:
                for dataValue in ownerListDic.values():

                    log.write(ownerListDic[num]['name'] +
                              "\t" + ownerListDic[num]['purchase'] + "\t" + ownerListDic[num]["bluePlate"] + "\t" + ownerListDic[num]['owner'] + "\n")
                    num += 1

                # after deletion this message will print
                print("Record deleted.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...