【问题标题】:How to remove the "\n" from the end of my string [duplicate]如何从我的字符串末尾删除“\n”[重复]
【发布时间】:2014-05-14 09:00:05
【问题描述】:

我有一个从文本文件读取到数组的列表,但现在它们的末尾都有“\n”。显然,当您打印它时您看不到它,因为它只需要换行。我想删除它,因为它给我带来了一些麻烦。

database = open("database.txt", "r")
databaselist = database.readlines()

这就是我用来从文件中读取的代码。我是一个完全的菜鸟,所以请不要使用疯狂的技术谈话,否则它会直接让我头疼

【问题讨论】:

    标签: python string python-3.x


    【解决方案1】:
    "string with or without newline\n".rstrip('\n')
    

    rstrip\n 一起使用可以避免任何不需要的副作用,除非它会在末尾删除多个\n(如果存在)。

    否则,你需要使用这个不太优雅的函数:

    def rstrip1(s, c):
        return s[:-1] if s[-1]==c else s
    

    【讨论】:

    • +1 用于提及在这种情况下使用它的正确方法。提到一些副作用:使用不带参数的strip() 也会删除任何尾随空格或制表符\t
    【解决方案2】:

    使用str.rstrip 删除每行末尾的换行符:

    databaselist = [line.rstrip("\n") for line in database.readlines()]
    

    但是,我建议您对代码再进行三处更改以提高效率:

    1. 删除对readlines的调用。遍历一个文件对象,一次生成一行。

    2. "r" 参数移除到open,因为该函数默认为读取模式。这不会提高代码的速度,但会减少冗余。

    3. 最重要的是,使用with-statement 打开文件。这将确保它在您完成后自动关闭。

    总的来说,新代码如下所示:

    with open("database.txt") as database:
        databaselist = [line.rstrip("\n") for line in database]
    

    【讨论】:

    • .rstrip('\n') 如果是制表符分隔的数据库,末尾有一个空白字段 (\t\n)
    猜你喜欢
    • 2016-03-21
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 2010-11-05
    相关资源
    最近更新 更多