Passing it straight to print() is all it takes to print a tuple in Python; you get parentheses and quotes. To print just the values, unpack it with a star: print(*t).
t = ("Seattle", "WA", 3)
print(t) # ('Seattle', 'WA', 3)
print(*t) # Seattle WA 3
You’ll see real output below, copied from runs on Python 3.12.5 with a small order record from Seattle.
In this tutorial, we’ll print a whole tuple, print its items without brackets, label it with f-strings, dodge the % formatting trap, and print a list of tuples as a neat table.
Print a whole tuple with print()
print() calls str() on the tuple, so you see Python’s own notation. Strings keep their quotes, which you’ll appreciate when debugging:
order = ("Seattle", "WA", 3, 49.99)
print(order)
print("Order:", order)
print(("Denver",)) # one-element tuple keeps its comma
print(()) # empty tuple
Output:
('Seattle', 'WA', 3, 49.99)
Order: ('Seattle', 'WA', 3, 49.99)
('Denver',)
()

That trailing comma in ('Denver',) isn’t a glitch. It’s what makes it a tuple, as explained in creating a Python tuple with one element.
Print tuple elements without parentheses
The star operator spreads the tuple into separate arguments, so print() separates them with spaces. Change sep to get commas or one item per line:
order = ("Seattle", "WA", 3, 49.99)
print(*order)
print(*order, sep=", ")
print(*order, sep="\n")
print(", ".join(map(str, order)))
Output:
Seattle WA 3 49.99
Seattle, WA, 3, 49.99
Seattle
WA
3
49.99
Seattle, WA, 3, 49.99

sep controls what goes between them.join() only accepts strings, so mixed tuples need map(str, ...) first. Use it when you want the text in a variable, not just on screen; converting a tuple to a string in Python goes deeper.
How do I print each tuple item on its own line?
A for loop gives you full control over each line. I add enumerate() when I want numbering:
cities = ("Austin", "Boston", "Chicago")
for i, city in enumerate(cities, start=1):
print(f"{i}. {city}")
Output:
1. Austin
2. Boston
3. Chicago
For while loops, zip() and nested tuples, see iterating through tuples in Python.
Print a tuple with f-strings and avoid the % trap
An f-string drops the whole tuple into text, or you can unpack it into names and format each value, like showing a price as USD with two decimals. Old-style % formatting is different:
order = ("Seattle", "WA", 3, 49.99)
city, state, qty, price = order
print(f"Tuple: {order}")
print(f"{city}, {state}: {qty} items at ${price:.2f} = ${qty * price:.2f}")
try:
print("Order: %s" % order)
except TypeError as err:
print("TypeError:", err)
print("Order: %s" % (order,))
Output:
Tuple: ('Seattle', 'WA', 3, 49.99)
Seattle, WA: 3 items at $49.99 = $149.97
TypeError: not all arguments converted during string formatting
Order: ('Seattle', 'WA', 3, 49.99)

% treats the tuple as four arguments and raises a TypeError.Wrapping it as (order,) fixes %, but f-strings are simpler. Naming the parts like this is covered in unpacking a tuple in Python.
Print a list of tuples as a table
Database rows often arrive as a list of tuples. Unpack each row and use width specs to line up columns:
sales = [("2026-01-15", "Miami", 1250.5), ("2026-02-03", "Portland", 980.0),
("2026-03-21", "Phoenix", 15420.75)]
print(f"{'Date':<12}{'City':<10}{'Amount':>12}")
for date, city, amount in sales:
print(f"{date:<12}{city:<10}{amount:>12,.2f}")
Output:
Date City Amount
2026-01-15 Miami 1,250.50
2026-02-03 Portland 980.00
2026-03-21 Phoenix 15,420.75

The ,.2f spec adds the comma and two decimals, also shown in formatting numbers with commas in Python. To order the rows first, see sorting a list of tuples in Python.
Print nested tuples and named tuples readably
Long nested tuples wrap badly with plain print(). You’ll get cleaner lines from pprint, and a named tuple prints its field names:
from pprint import pprint
from collections import namedtuple
regions = (("West", ("Seattle", "Portland", "San Francisco")),
("South", ("Austin", "Miami", "Atlanta")))
pprint(regions, width=50)
Store = namedtuple("Store", ["city", "state", "revenue"])
print(Store("Columbus", "OH", 87500.25))
Output:
(('West',
('Seattle', 'Portland', 'San Francisco')),
('South', ('Austin', 'Miami', 'Atlanta')))
Store(city='Columbus', state='OH', revenue=87500.25)
For deeper structures, working with a tuple of tuples in Python shows how to read them.
Ways to print a tuple compared
| Goal | Code | Output style |
|---|---|---|
| Debug view | print(t) | ('Austin', 3) |
| Bare values | print(*t) | Austin 3 |
| Custom separator | print(*t, sep=", ") | Austin, 3 |
| As a string | ", ".join(map(str, t)) | Austin, 3 |
| In a sentence | f"Row: {t}" | Row: ('Austin', 3) |
Four more tuple and printing tutorials pair well with this one:
- Create a tuple in Python
- Access tuple elements in Python
- Print a list without brackets in Python
- Convert a dictionary to a list of tuples in Python
Frequently asked questions
How do I print a tuple in Python?
Pass it to print(): print(t) shows it with parentheses, like ('Austin', 3).
How do I print a tuple without parentheses?
Unpack it with print(*t), or use print(*t, sep=", ") for commas.
Why does print show a comma after a single item?
('Denver',) is how Python writes a one-element tuple; the comma marks it as a tuple.
Why does “%s” % my_tuple raise a TypeError?
% treats a tuple as its list of arguments. Use % (my_tuple,) or an f-string.
How do I print a tuple on one line without spaces?
Use print(*t, sep="") or "".join(map(str, t)).
Where is print() documented?
See print() in the Python docs.

Bijay Kumar is a 13-time Microsoft MVP with more than 18 years in software development, and the founder of Python Guides and TSinfo Technologies. He started out building .NET and SharePoint solutions at HP, TCS and KPIT before moving into Python, machine learning and AI, and he also builds web apps with TypeScript and React. He writes the tutorials here himself, and every example is run before publishing so you see the real output. More about Bijay · Microsoft MVP profile · LinkedIn