将\r文本转换为\n以使readlines()正常工作

18 投票
2 回答
19151 浏览
提问于 2025-04-15 16:18

在Python中,你可以通过以下方式读取一个文件,并把它的每一行加载到一个列表中:

f = open('file.txt','r')
lines = f.readlines()

每一行是由\n来分隔的,但如果一行的内容中有\r,那么它就不会被当作新的一行来处理。我需要把所有的\r都转换成\n,这样才能得到正确的列表lines

如果我在lines里面使用.split('\r'),那么我会得到一个列表里面还有列表的情况。

我想过打开文件,把所有的\r替换成\n,然后关闭文件再重新读取,这样再用readlines(),但这样感觉有点浪费。

我该怎么做呢?

2 个回答

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')
44
f = open('file.txt','rU')

这段话的意思是,用Python打开文件的时候,它支持一种叫做“通用换行符”的功能。在这种情况下,\r会被当作行的结束符号来处理。

撰写回答