删除地址簿中的条目

Delete an entry in a addressBook

我正在尝试开发 python 通讯录,但无法 删除 联系人。

我的地址文件在每一行中都有一个联系方式,格式为:姓氏;first_name;phone_number。 要删除联系人,我会验证联系人是否存在,如果存在,我将创建一个包含所有条目的新文件,但要删除的条目除外,但条件 if line != line_to_delete: 不起作用。

我已经尝试过 readlines(),但问题仍然存在。 .

代码:

def delete_contact(self):

    line_to_delete=self.surname+";"+self.first_name+";"+self.phone_number
    name="Address_Book"

    try:        
        new_file=open(name, 'a')

        with open('addressBook') as old_file:
            for line in old_file:
                if line != line_to_delete:
                    new_file.write(line)


        new_file.close()
        old_file.close()
        os.remove("addressBook")
        os.rename("Address_Book", "addressBook")
        return True

    except Exception:
        print("It's not possible to read the file")

为了进行比较,您需要从读取行的末尾去除换行符:

with open('addressBook') as old_file:
    for line in old_file:
        if line.rstrip() != line_to_delete:
            new_file.write(line)

jrennie已经给出了答案:

说明:返回的行末尾有“\n”。 所以如果没有 .rstrip() 你正在比较(只是一个例子):

"Martin";"Prince";"44" (line_to_delete) == "Martin";"Prince";"44" + "\n" ( for循环中的行)