1

两部分问题。

首先,我怎样才能改变这个(我试过使用'for'但我无法弄清楚)以便它保存起来;“键值”而不是“{键:值}”。

with open("phonebook.txt", "w") as x:
    json.dump(a, x)

其次,如何使用用户输入从文件中删除。我看不到将其更改为从文件中删除而不是从字典'a'中删除的方法;

name = input("enter name of contact you want to delete: ")
if name in a:
    del a[name]

编辑。这是我现在所做的,但它没有达到预期的效果(我也尝试在 x 所在的位置添加 .readlines ,但它只会出错。

def save(a):
    with open("phonebook.txt", "w") as x:
        for k in a:
            json.dump(str(k)+" "+str(a[k]), x)

def load():
    a = {}
    with open("phonebook.txt", "r") as f:
        for l in f:
            a[l[0]] = l[1]
        print (a)

def save 工作正常(据我所知)

我也试过 c = l.split() 和 a[c[0]] = c[1]。就是不想工作!

4

1 回答 1

1

第一部分

那不是 JSON 格式。如果您需要其他东西,请不要使用它。使用纯文本文件,例如

    with open("phonebook.txt","w") as file :
        for key, value in a.items() :
            file.write(str(key)+" "+str(value))

第二部分

看起来您已将文件加载到 dictionarya中。在这种情况下,您只需a在删除后将字典写回文件即可。如果您还没有将文件加载到字典中,您可以这样做:

    a= {}
    with open("phonebook.txt") as file :
        for line in file.readlines() :
            content= line.split()
            a[content[0]]= content[1]
于 2013-09-01T00:35:06.600 回答