If I wanted to print multiple lines of text in Python without typing print('') for every line, is there a way to do that?
I'm using this for ASCII art in Python 3.5.1.
You can use triple quotes (single ' or double "):
a = """
text
text
text
"""
print(a)
textwrap.dedent(a) to remove the indentation. Or even better - use print's argument sep=os.linesep as in Quba's answer.As far as I know, there are three different ways.
Use os.linesep in your print:
print(f"first line{os.linesep}Second line")
Use sep=os.linesep in print:
print("first line", "second line", sep=os.linesep)
Use triple quotes and a multiline string:
print("""
Line1
Line2
""")
os module in Python 3.13 explicitly state "Do not use os.linesep as a line terminator when writing files opened in text mode (the default); use a single '\n' instead, on all platforms." (and that phrase has been there since at least 2007!)I wanted to answer to the following question which is a little bit different than this:
Best way to print messages on multiple lines
He wanted to show lines from repeated characters too. He wanted this output:
----------------------------------------
# Operator Micro-benchmarks
# Run_mode: short
# Num_repeats: 5
# Num_runs: 1000
----------------------------------------
You can create those lines inside f-strings with a multiplication, like this:
run_mode, num_repeats, num_runs = 'short', 5, 1000
s = f"""
{'-'*40}
# Operator Micro-benchmarks
# Run_mode: {run_mode}
# Num_repeats: {num_repeats}
# Num_runs: {num_runs}
{'-'*40}
"""
print(s)
while True: time.sleep(1) direction = ["left", "right", "up", "down"] x = random.choice(direction) print(x, end="\r") thanks!The triple quotes answer is great for ASCII art, but for those wondering - what if my multiple lines are a tuple, list, or other iterable that returns strings (perhaps a list comprehension?), then how about:
print("\n".join(<*iterable*>))
For example:
print("\n".join(["{}={}".format(k, v) for k, v in os.environ.items() if 'PATH' in k]))
print would normally do that, but join doesn't. print("\n".join([str(x) for x in iterable])Somehow indent preserving way is not yet mentioned:
print('This is a long string that is split \n'
'across multiple lines using parentheses')
This is a long string that is split
across multiple lines using parentheses
this works because consequent string literals are implicitly joined:
msg = 'Space after newline symbol \n' 'improves readability'
print(msg)
Space after newline symbol
improves readability
forloop..."\n"can be used for a new line character, or if you are printing the same thing multiple times then a for loop should be used.