【问题标题】:How can I avoid creating an extra empty line while using append in a file using python?在使用 python 的文件中使用 append 时,如何避免创建额外的空行?
【发布时间】:2021-09-04 04:57:29
【问题描述】:

我正在创建一个文件,我应该在其中写入、搜索、删除和打印其内容。 当我删除一些行时,我必须再次显示更新的文件(没有删除的行),但是每当我这样做时,程序都会在文件末尾创建一个额外的空行。我该如何解决?

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

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)

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

【问题讨论】:

    标签: python python-3.x return append txt


    【解决方案1】:

    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") 
    

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

    【讨论】:

    • 非常感谢您的解释!
    【解决方案2】:

    在源文件中,除最后一行之外的所有行都是text\n,最后一行是text。如果最后一行被删除,则前面的text\n 在其自身之后形成一个空行。您可以在将行输出到文件之前从列表的最后一个元素中初步删除\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")
    

    【讨论】:

    • 非常感谢您的解释!它非常有用,我必须修复我的小错误 :)
    猜你喜欢
    • 2017-02-27
    • 2020-02-05
    • 1970-01-01
    • 2016-07-19
    • 2021-09-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多