2009-11-23 35 views
18

在Python中,您可以使用將 r n文本轉換爲 n,以便readlines()按預期工作

讀取文件並將其行加載到列表中
f = open('file.txt','r') 
lines = f.readlines() 

每個單獨的行由\n分隔,但如果行的內容具有\r,則不會將其視爲新行。我需要將所有\r轉換爲\n並獲得正確的列表lines

如果我在lines中執行.split('\r'),我將獲得列表中的列表。

我想打開一個文件,將所有\r替換爲\n,關閉文件並再次讀取它然後使用readlines()但這看起來很浪費。

我該如何實現?

+0

其實,如果你有'\ N'和'\ r'換行符的混合,而如果後者發生內用「\ n」分隔的「真正」行,然後在列表中獲取列表對我來說是正確的事情。 – 2009-11-23 19:09:19

回答

44
f = open('file.txt','rU') 

這將打開文件Python的universal newline support\r被視爲最終的線。

+3

...雖然此功能已被棄用,不應根據Python文檔在新代碼中使用。 – 2009-11-23 19:07:28

+0

謝謝!這按預期工作,對我來說已經足夠了。 蒂姆,現在做什麼是正確的方法? – greye 2009-11-23 19:10:57

+3

在Python 3.x中,默認情況下,通用換行支持處於啓用狀態,因此您不必執行任何操作。 – 2009-11-23 19:22:40

3

如果這是一個問題,以二進制格式打開並使用此代碼轉換:

from __future__ import with_statement 

with open(filename, "rb") as f: 
    s = f.read().replace('\r\n', '\n').replace('\r', '\n') 
    lines = s.split('\n') 
相關問題