file.readlines()留下空白行

May*_*ain 4 python string file-io

我已经阅读了file.readlines逐行读取整个文件并将其存储在列表中.如果我有这样的文件 -

Sentence 1
Sentence 2
Sentence 3
Run Code Online (Sandbox Code Playgroud)

我用它readlines来打印每个句子 -

file = open("test.txt") 
for i in file.readlines():
    print i
Run Code Online (Sandbox Code Playgroud)

输出是

Sentence 1

Sentence 2

Sentence 3
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么我在每个句子之间得到额外的界限,我怎么能摆脱它呢?如果这个问题非常愚蠢,请原谅我,但我对Python不是很有经验.

UPDATE

我发现使用i.strip也删除了多余的线,为什么会发生这种情况?据我所知,split删除字符串末尾和字符串开头的空格.

fal*_*tru 7

file.readlines()返回字符串列表.每个字符串都包含尾随换行符.printstatement使用newlnie打印传递的参数.这就是为什么你有额外的线条.

要删除额外的换行符,请使用str.rstrip:

print i.rstrip('\n')
Run Code Online (Sandbox Code Playgroud)

或使用 sys.stdout.write

sys.stdout.write(i)
Run Code Online (Sandbox Code Playgroud)

顺便说file.readlines一下,除非你一次需要所有的线路,否则不要使用.只需迭代文件即可.

with open("test.txt") as f:
    for i in f:
        print i.rstrip('\n')
        ...
Run Code Online (Sandbox Code Playgroud)

UPDATE

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

在Python 2中,如果您执行以下操作,则可以使用相同的功能: from __future__ import print_function

回答更新

选项卡,换行符也被视为空格.

>> ' \r\n\t\v'.isspace()
True
Run Code Online (Sandbox Code Playgroud)