python - 如何在读取文件时删除 "\n"字符,但删除一个变量然后替换它

标签 python text-files

我正在尝试制作一个程序,该程序从文件中读取并删除其中的特定行,然后将存储的所有数据放回文件中,并以新行分隔。该文件使用以下格式:

Jones|20|20|00
bob|30|19|90
James|40|19|80

所以我想删除(备份包含这个,是我想删除的行)
鲍勃|30|19|90
但我使用的代码会删除新行并且不会替换它,但是当我尝试向其中添加\n 时,文件不想读取它(添加 2 个“\n”):

Jones|20|20|00

James|40|19|80

我正在使用下面的代码:

def deleteccsaver(backup):
lockaccount =""
lockaccount = lockaccount.strip("\n")
with open('accounts_project.txt','r+') as f:
    newline=[]
    for line in f.readlines():
        newline.append(line.replace(backup, lockaccount).strip("\n"))
with open('accounts_project.txt','w+') as f:
    for line in newline:
            f.writelines(line +"\n")
    f.close()
    resetlogin()

请帮忙,因为我不知道如何将\n 添加回来而不显示为“\n\n”
如果没有“\n”,它显示为:

Jones|20|20|00James|40|19|80

任何建议:

最佳答案

我在这里所做的是一次读取整个文件,如果您有一个非常非常大的文件,请不要这样做。一次读取所有文件内容后,我使用“\n”作为分隔符来制作一个列表。阅读 python 中的 split 函数以了解更多信息。然后从列表中我用 lockaccount 替换备份,就像您一直在做的一样,这些是您正在使用的变量的名称,希望在这种情况下我没有混淆它们。然后,在列表的每个元素(即前一个文件的每一行)后添加新行后,它将保存到新文件中。这将导致结果文件具有与先前文件相同的所有内容,但删除您想要删除的内容。我看到 lockaccount 本身是一个空字符串,因此添加它可能会在您的文件中创建一个换行符。如果您不希望 lockaccount 替换文件中的备份变量,只需使用 contents.remove(backup) 而不是 contents[contents.index(backup)] 从列表中删除备份== lockaccount 保持其余代码相同。希望这能更好地解释。

def deleteccsaver(backup):
    lockaccount =""
    lockaccount = lockaccount.strip("\n")
    with open('accounts_project.txt','r+') as f:
        contents = f.read().split("\n")
        if backup in contents:
            contents[contents.index(backup)] = lockaccount
        new_contents = "\n".join(contents)
    with open('accounts_project.txt','w+') as f:
        f.write(new_contents)
    resetlogin()

关于python - 如何在读取文件时删除 "\n"字符,但删除一个变量然后替换它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63077175/

相关文章:

python - 根据第三个列表中的随机项目,从两个列表之一中选择一个随机项目

python - 在 Python 3 中不使用 `break` 停止迭代

swift - Xcode 7.1 测试版 : Content Of File Error

c - 我在带有分隔符的文本文件中有一组值如何使用 C 编程修改值

java - 没有错误,那么为什么 ObservableList 在这个项目中不起作用?

python - XPath 使用 lxml 失败

Python - 画一棵树 HW

python - 即使 is_valid 为 True,Serializer validated_data 也是空的

python - 如何在特定点拆分字符串?

python - 给定比例将文件随机分发到训练/测试中