【问题标题】:a = open("file", "r"); a.readline() output without \n [duplicate]a = open("文件", "r"); a.readline() 输出没有 \n [重复]
【发布时间】:2017-02-16 16:19:12
【问题描述】:

我将要编写一个 python 脚本,它能够读取一个 txt 文件,但是使用 readline() 总是有 \n 输出。如何从变量中删除它?

a = open("file", "r")
b = a.readline()
a.close()

【问题讨论】:

  • 删除字符串的最后一个元素...
  • 这不是重复的。 OP 正在寻找从没有换行符的文件中读取一行。虽然他们的解决方案可能是 rstrip(),但文件特定的操作值得探索。

标签: python


【解决方案1】:

那就是:

b.rstrip('\n')

如果您想从每一行中去除空间,您可以考虑改为:

a.read().splitlines()

这会给你一个行列表,没有行尾字符。

【讨论】:

    【解决方案2】:

    一个解决方案,可以是:

    with open("file", "r") as fd:
        lines = fd.read().splitlines()
    

    你会得到不带“\r\n”或“\n”的行列表​​。

    或者,使用经典方式:

    with open("file", "r") as fd:
        for line in fd:
            line = line.strip()
    

    您逐行读取文件并删除空格和换行符。

    如果你只想删除换行符:

    with open("file", "r") as fd:
        for line in fd:
            line = line.replace("\r", "").replace("\n", "")
    

    等等。

    注意: Python 3 的行为略有不同。要模仿这种行为,请使用io.open

    查看io.open的文档。

    所以,你可以使用:

    with io.open("file", "r", newline=None) as fd:
        for line in fd:
            line = line.replace("\n", "")
    

    换行参数为None时:输入中的行可以以'\n'、'\r'或'\r\n'结尾,这些都被翻译成' \n'。

    newline 控制通用换行符的工作方式(它仅适用于文本模式)。它可以是 None、''、'\n'、'\r' 和 '\r\n'。它的工作原理如下:

    在输入时,如果换行符为无,则启用通用换行符模式。输入中的行可以以 '\n'、'\r' 或 '\r\n' 结尾,这些行在返回给调用者之前会被翻译成 '\n'。如果是 '',则启用通用换行模式,但行尾返回给调用者未翻译。如果它具有任何其他合法值,则输入行仅由给定字符串终止,并且行尾未翻译返回给调用者。

    【讨论】:

    • 太糟糕了,主题被关闭为重复。这是此主题与另一个被认为是非重复帖子之间的最佳答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2013-05-27
    • 2022-12-02
    • 1970-01-01
    相关资源
    最近更新 更多