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删除字符串末尾和字符串开头的空格.
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)