(注:我並不想改變什麼 - 只是想了解)爲什麼[line in open(「text.txt」)]會產生換行符?
望着解決方案,在Python中的文件中讀取,每一次換行字符應該扒掉:
In [5]: [line for line in open("text.txt", "r")]
Out[5]: ['line1\n', 'line2']
雖然直覺行爲(判斷一些questions關於此的流行)將只是產生剝離線?
這背後的基本原理是什麼?
- 編輯 -
授予:'直覺'是主觀的。然而,「一致」並不如此。顯然,在"line1\nline2".splitlines()
的「行」的概念是不同的一個比一個由iter(open("text.txt"))
處理:
>>> assert(open("text.txt").readlines() == \
... open("text.txt").read().splitlines())
AssertionError
很肯定的人做得到由該抓。
所以我誤會了:也許我的直覺是符合splitlines
的解釋:分裂的東西不應該包括分隔符。也許我的問題的答案不是技術性的,而更像是「自PEP-xyz被不同的人批准而不是PEP-qrs」。也許我應該把它發佈到一些Python語言論壇。
「的人不」很多不期望獲得換行「並不一定意味着這是直觀的設計。也許換行符的數量比換行符的數量多一百比一 - 你只是不知道它,因爲它們都沒有在帖子上寫道:「我使用了'in line in file',它給了我完全我認爲會的東西」 – Kevin
I會讀[Python的禪](https://www.python.org/dev/peps/pep-0020/) - 它聲明「顯式比隱式更好」。在某些情況下隱含剝離新行可能不起作用,例如將這些行寫入另一個文件。 – AChampion
我相信一些大的,重要的機構決定,一行是以預定義字符或字符集合(換行符)結尾的字符序列。這意味着「line1」實際上並不是一條線,也是爲什麼有些人認爲沒有尾隨換行符的文件是無效的。 –