【问题标题】:How to avoid new line in readline() function in python 3x? [duplicate]如何避免 python 3x 中 readline() 函数中的新行? [复制]
【发布时间】:2015-10-21 00:43:48
【问题描述】:

我是 python 编程的新手。我遵循了“Learn python the hard way”一书,但它是基于 python 2x 的。

def print_one_line(line_number,f):
    print(line_number,f.readline())

在这个函数中每次打印一行和一个新行

1 gdfgty

2 yrty

3 l

我读过纪录片,如果我在 readline() 之后加上 ,(逗号) 那么它就不会打印一个新的\n。 这是纪录片:

为什么文件中的行之间有空行?这 readline() 函数返回文件末尾的 \n 那条线。这意味着 print 的 \n 被添加到 已由 readline() 函数返回。要更改此行为,只需添加一个 , (逗号)在 print 的末尾,这样它就不会打印自己的 .

当我使用 python 2x 运行该文件时,就可以了,但是当我在 python 3x 中运行该文件时,则会打印换行符。如何避免 python 3x 中的换行符?

【问题讨论】:

  • 您可以在调用print时使用end=''
  • @xnx 是的,它工作。谢谢。
  • @LukasGraf,python 2x 的许多问题。我认为这适用于 python 2x。
  • readline.rstrip() 将涵盖 2 和 3
  • @PadraicCunningham 你能写出我如何使用 readline.rstrip() 的代码吗?我尝试使用,但它说 AttributeError: 'builtin_function_or_method' object has no attribute 'rstrip'

标签: python python-2.7 python-3.x newline


【解决方案1】:

由于您的内容已经包含您想要的换行符,请使用可选的end 参数告诉print() 函数不要添加任何换行符:

def print_one_line(line_number,f):
    print(line_number,f.readline(), end='')

【讨论】:

    【解决方案2】:

    除了其他方式,你还可以使用:

    import sys
    sys.stdout.write(f.readline())
    

    目前适用于所有 Python 版本。

    【讨论】:

      【解决方案3】:

      您可以从输入中去除换行符,而不是跳过输出中的换行符:

      print(line_number, f.readline().rstrip('\n'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 2019-06-13
        • 2014-12-11
        相关资源
        最近更新 更多