如何避免在Python 3.x中使用readline()函数时出现换行符?

6

我是一个新手程序员,正在学习Python。我已经按照《笨办法学Python》这本书的教程学习了一段时间,但这本书是基于Python 2.x版本的。

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()函数返回的一个\n中。为了改变这种行为,只需在print末尾添加一个逗号,这样它就不会自己打印\n了。

当我用Python 2x运行文件时,一切正常,但当我使用Python 3x时,换行符被打印出来。怎样才能避免Python 3x中的这个换行符?

1
你可以在调用 print 时使用 end='' - xnx
@xnx,可以了,谢谢。 - Mastan
@LukasGraf,许多问题都是针对Python 2.x的。我认为那是针对Python 2.x的。 - Mastan
readline.rstrip() 将同时适用于2和3版本。 - Padraic Cunningham
@PadraicCunningham,你能写一下如何使用readline.rstrip()的代码吗?我尝试使用它,但它显示AttributeError: 'builtin_function_or_method'对象没有属性'rstrip'。 - Mastan
抱歉,那是一个打错的字 readline().rstrip() - Padraic Cunningham
3个回答

6

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

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

2
除了其他方法之外,您还可以使用以下方法:
import sys
sys.stdout.write(f.readline())

可与迄今为止的所有Python版本兼容。


1
不要在输出时跳过换行符,而是可以从输入中去除它:
print(line_number, f.readline().rstrip('\n'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接