将\ r \ n文本转换为\ n,以便readlines()按预期工作

时间:2009-11-23 18:58:13

标签: python readline

在Python中,您可以使用

读取文件并将其行加载到列表中
f = open('file.txt','r')
lines = f.readlines()

每个单独的行由\n分隔,但如果某行的内容为\r,则不会将其视为新行。我需要将所有\r转换为\n并获取正确的列表lines

如果我在.split('\r')lines我会在列表中找到列表。

我考虑过打开一个文件,将所有\r替换为\n,关闭文件并再次阅读,然后使用readlines(),但这似乎很浪费。

我该如何实现?

2 个答案:

答案 0 :(得分:44)

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

这将使用Python universal newline support打开文件,\r被视为行尾。

答案 1 :(得分: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')