关于python:为什么[line in open(“text.txt”)]生成换行符?

why do [line in open(“text.txt”)] yield newlines?

(注:我不想改变任何事情-只是想理解)

查看用python读取文件的解决方案,每次都应该去掉换行符:

1
2
3
In [5]: [line for line in open("text.txt","r")]
Out[5]: ['line1
'
, 'line2']

而直观的行为(根据一些关于这方面的问题的流行程度判断)将只是产生剥离的线条?

这背后的理由是什么?

--编辑——

当然,"直觉"是主观的。然而,一致性就不那么重要了。显然,"line1
line2".splitlines()
中的"线"概念与iter(open("text.txt"))处理的"线"概念不同:

1
2
3
>>> assert(open("text.txt").readlines() == \
... open("text.txt").read().splitlines())
AssertionError

很肯定人们会被这个抓住。

所以我错了:也许我的直觉和splitlines的解释是一致的:分裂的东西不应该包括分隔符。也许我的问题的答案不是技术性的,但更像是"因为PEPXYZ得到了不同于PEPQRS的人的批准"。也许我应该把它发到一些Python语言论坛上。


好吧,这是一条线。行的定义是以字符
结尾。如果字符序列不是以
或eof结尾,我们怎么知道它是一行?

1
2
3
"hello world"
"hello world
"

第一行不是行,如果我们打印两次,可能会

hello worldhello world

第二个版本会给我们

1
2
hello world
hello world