将\r文本转换为\n以使readlines()正常工作
在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
会被当作行的结束符号来处理。