在使用python的文件中使用append时,如何避免创建额外的空行



我正在创建一个文件,用于编写、搜索、删除和打印其内容。当我删除一些行时,我必须再次显示更新的文件(没有删除的行(,但每当我这样做时,程序都会在文件末尾创建一个额外的空行。我该怎么修?

这是我写的代码(有些部分是西班牙语,因为那是我的原始语言(:

def borrar():
with open("agenda.txt","r") as f:
datos=f.readlines()
print("Digite la cedula del beneficiario a borrar:")
doc=input()
for i in datos:
if i==(doc+'n'):
indice=datos.index(i)
documento=indice
nombre=indice-1
telefono=indice+1
del datos[nombre:telefono+1]
return(datos)
def actualizar(lis=[]):
with open("agenda.txt","w") as f:
for i in lis: 
f.write(i)
print("El usuario ha sido eliminado del listado") 

li=borrar()

actualizar(li)

如果能得到任何帮助,我将不胜感激!!!

f.write()实际上并没有在输入文本的末尾放置换行符。问题出现在borrar()中,它在列表中的每个项目中都添加了一行换行符。如果您希望actualizar(lis=[])删除列表最后一项上的换行符,您可以将其更改为

def actualizar(lis=[]):
with open("agenda.txt","w") as f:
for i in range(len(lis)-1): 
f.write(lis[i])
f.write(lis[len(lis)-1].strip())
print("El usuario ha sido eliminado del listado") 

这些代码所做的只是像往常一样编写其余的行,但从列表中最后一项的末尾删除换行符。

在源文件中,除最后一行外,所有行都是textn,最后一行是text。如果最后一行被删除,则前一个textn在其自身之后形成空行。在将行输出到文件之前,您可以预先从列表的最后一个元素中删除n

def actualizar(lis):
lis[-1] = lis[-1].strip('n')  # add just this line
with open("agenda.txt", "w") as f:
for i in lis:
f.write(i)
print("El usuario ha sido eliminado del listado")

最新更新