如何避免 python 3x 中 readline() 函数中的新行? [复制]

Posted

技术标签:

【中文标题】如何避免 python 3x 中 readline() 函数中的新行? [复制]【英文标题】:How to avoid new line in readline() function in python 3x? [duplicate] 【发布时间】: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' 【参考方案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'))

【讨论】:

以上是关于如何避免 python 3x 中 readline() 函数中的新行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sys.stdin.readlines() 挂起 Python 脚本

为什么RGBA位图需要3x3阵列来存储1个像素?如何避免这种情况?

如何避免在 C# 中完成线程?

python读取大文件和普通文件

如何使 readline 在 python 子进程中工作?

如何使用 python 3x 从两个单独的运行 python 文件发送数据