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