如何避免 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 脚本