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

greye picture greye · Nov 23, 2009 · Viewed 17.8k times · Source

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?

Answer

Ned Deily picture Ned Deily · Nov 23, 2009
f = open('file.txt','rU')

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