留空行的file.readlines

2024-05-17 06:58:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我读过file.readlines逐行读取整个文件并将其存储在列表中。 如果我有这样的档案-

Sentence 1
Sentence 2
Sentence 3

我用readlines来打印每个句子,就像这样-

file = open("test.txt") 
for i in file.readlines():
    print i

输出是

Sentence 1

Sentence 2

Sentence 3

我的问题是,为什么我要在每句话之间加上一条线,我如何才能去掉它?

更新

我发现使用i.strip也会删除多余的行。为什么会这样?据我所知,split删除字符串末尾和开头的空白。


Tags: 文件intesttxt列表for档案open
3条回答

file.readlines()返回字符串列表。每个字符串都包含尾随的换行符。print语句用newlnie.打印传递的参数。这就是为什么有多余的行。

要删除多余的换行符,请使用str.rstrip

print i.rstrip('\n')

或者使用sys.stdout.write

sys.stdout.write(i)

顺便说一下,不要使用file.readlines,除非您需要同时使用所有行。只需迭代文件。

with open("test.txt") as f:
    for i in f:
        print i.rstrip('\n')
        ...

更新

在Python 3中,为了防止print打印尾随的换行符,可以使用print(i, end='')

在Python 2中,如果使用相同的特性,则可以使用:^{}

更新答案

制表符、换行符也被视为空白。

>> ' \r\n\t\v'.isspace()
True
file.readlines()

(以及file.readline())包括新行。

print i.replace('\n', '')

如果你不想要的话。

将换行符包含在行尾似乎有些奇怪,但这允许您判断最后一行是否有换行符。在许多语言的I/O中,这种情况很棘手

下面将为您删除换行符。

i = i.rstrip("\n") #strips newline

希望这有帮助。

相关问题 更多 >