The best answers to the question “Getting rid of \n when using .readlines() [duplicate]” in the category Dev.
I have a .txt file with values in it.
The values are listed like so:
Value1 Value2 Value3 Value4
My goal is to put the values in a list. When I do so, the list looks like this:
['Value1\n', 'Value2\n', ...]
\n is not needed.
Here is my code:
t = open('filename.txt', 'r+w') contents = t.readline() alist =  for i in contents: alist.append(i)
I’d do this:
alist = [line.rstrip() for line in open('filename.txt')]
with open('filename.txt') as f: alist = [line.rstrip() for line in f]
This should do what you want (file contents in a list, by line, without \n)
with open(filename) as f: mylist = f.read().splitlines()
After opening the file, list comprehension can do this in one line:
fh=open('filename') newlist = [line.rstrip() for line in fh.readlines()] fh.close()
Just remember to close your file afterwards.
You can use
.rstrip('\n') to only remove newlines from the end of the string:
for i in contents: alist.append(i.rstrip('\n'))
This leaves all other whitespace intact. If you don’t care about whitespace at the start and end of your lines, then the big heavy hammer is called
However, since you are reading from a file and are pulling everything into memory anyway, better to use the
str.splitlines() method; this splits one string on line separators and returns a list of lines without those separators; use this on the
file.read() result and don’t use
file.readlines() at all:
alist = t.read().splitlines()