Removing \r\n from a Python list after importing with readlines
Asked Answered
G

4

26

I have saved a list of ticker symbols into a text file as follows:

MMM
ABT
ABBV
ANF
....

Then I use readlines to put the symbols into a Python list:

stocks = open(textfile).readlines()

However, when I look at the list in it contains Windows end-of-line delimiter which I do not want:

list: ['MMM\r\n', 'ABT\r\n', 'ABBV\r\n', 'ANF\r\n', 'ACE\r\n', 'ACN\r\n', 'ACT\r\n', 'ADBE\r\n', 'ADT\r\n', 'AMD\r\n', 'AES\r\n', .....

Can someone suggest the easiest way to remove these unwanted characters?

Goodwill answered 25/7, 2014 at 1:30 Comment(0)
L
36

That's basically how readlines works. You could post-process it:

stocks = [x.rstrip() for x in stocks]

But I prefer not using readlines at all if I don't want EOL character(s), instead doing:

stocks = open(textfile).read().splitlines()

Or even better:

with open(textfile) as f:
    stocks = f.read().splitlines()

(it almost certainly won't make a difference here, but using context managers to explicitly close file objects is a good habit to get into)

Laroy answered 25/7, 2014 at 1:38 Comment(1)
but read() reads until EOF. readline() reads until \r\nPhlogopite
F
14

readlines() should never be used unless you know that the file is really small. For your application, it is better to use rstrip()

with open(filename, 'r') as f:
    for l in f:
        l = l.rstrip()
        # other operations. 
Fredia answered 25/7, 2014 at 1:38 Comment(0)
D
13

You could replace \r\n with the empty string in a replace command.

stocks = [x.replace("\r\n","") for x in stocks]
Denounce answered 25/7, 2014 at 1:32 Comment(0)
S
1

You could do it like this:

stocks = open(textfile).read().splitlines()
Sherl answered 25/7, 2014 at 1:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.