Convert \\r text to \\n so readlines() works as in

2019-02-08 01:32发布

问题:

In Python, you can read a file and load its lines into a list by using

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

Each individual line is delimited by \n but if the contents of a line have \r then it is not treated as a new line. I need to convert all \r to \n and get the correct list lines.

If I do .split('\r') inside the lines I'll get lists inside the list.

I thought about opening a file, replace all \r to \n, closing the file and reading it in again and then use the readlines() but this seems wasteful.

How should I implement this?

回答1:

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

This opens the file with Python's universal newline support and \r is treated as an end-of-line.



回答2:

If it's a concern, open in binary format and convert with this code:

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')