2009-11-23 102 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') 
相关问题