Given a file with name
file.txt and the following content:
hi finxters! :)
You created a Python script that reads the file line-by-line and prints each line to the shell like so:
with open("file.txt") as file: for line in file: print(line)
But the output unexpectedly adds an extra newline to each line so you obtain the following output on the Python shell:
hi finxters! :)
How to print without the extra newlines?
Method 1: print() with end=” Argument
Explanation: Python’s built-in
print() function takes an optional
end argument—per default set to the newline character:
end='\n'. Consequently, the expression
print(line) adds a newline from the print statement in addition to the newline read from the file and stored in the variable
The solution is to get rid of one of the newline characters, for example by printing without newline by setting the argument
with open("file.txt") as file: for line in file: print(line, end = '')
The output now correctly displays the file content:
hi finxters! :)
You can learn more about the
print() built-in function in the following video:
Method 2: Remove Newline From String with rstrip()
When printing a line read from a file, Python prints one newline character from the file and one from the print statement. You can get rid of the newline character in the
line by using the
line.rstrip() method that removes all whitespaces from the end of the line.
with open("file.txt") as file: for line in file: print(line.rstrip())
Again, the output now correctly displays the file content with only one newline character between the lines:
hi finxters! :)
The following video gives a short intro to the
string.rstrip() method—feel free to watch!
string.rstrip() removes all whitespaces from the string—even tabular characters
'\t' and empty spaces
' '. If this is not what you want, use the following simple method:
with open("file.txt") as file: for line in file: print(line.rstrip('\n'))
This will only remove the trailing newline character and not the remaining whitespaces. A (worse) alternative is given next for comprehensibility:
Method 3: Remove Newline From String with Slicing
When reading a file line by line, every line has a trailing newline character. This is the last character of the
line string. To remove the last character from the string line, use the slicing operation
line[:-1] with negative index -1. This reliably removes the last character which is the newline character
'\n' and avoids printing the newline twice.
But the last line in a file doesn’t have a newline character. In that case, to avoid removing the last regular character, you need to print the last line as is. You can do this with a simple if-else block like so:
with open("file.txt") as file: for line in file: if line[-1] == '\n': print(line[:-1]) else: print(line)
However, this solution is not as clean and Pythonic as the previous solutions. It’s a good exercise on an important Python concept, slicing, so I decided to include it anyways. You can master slicing here:
Where to Go From Here?
Enough theory. Let’s get some practice!
Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.
To become more successful in coding, solve more real problems for real people. That’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?
You build high-value coding skills by working on practical coding projects!
Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?
🚀 If your answer is YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.
If you just want to learn about the freelancing opportunity, feel free to watch my free webinar “How to Build Your High-Income Skill Python” and learn how I grew my coding business online and how you can, too—from the comfort of your own home.
While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com. He’s author of the popular programming book Python One-Liners (NoStarch 2020), coauthor of the Coffee Break Python series of self-published books, computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.