I am creating a very rudimentary "Address Book" program in Python. I am grabbing contact data from a CSV file, the contents of which looks like the following example:
Name,Phone,Company,Email
Elon Musk,454-6723,SpaceX,[email protected]
Larry Page,853-0653,Google,[email protected]
Tim Cook,133-0419,Apple,[email protected]
Steve Ballmer,456-7893,Developers!,[email protected]
I am trying to format the output so that it looks cleaner and more readable, i.e. everything lined up in rows and columns, like this:
Name: Phone: Company: Email:
Elon Musk 454-6723 SpaceX [email protected]
My current code is as follows:
f = open("contactlist.csv")
csv_f = csv.reader(f)
for row in csv_f:
print(row)
Which naturally due to lack of formatting, produces this, which still looks very unclean.
['Name', 'Phone', 'Company', 'Email']
['Elon Musk', '454-6723', 'SpaceX', '[email protected]']
['Larry Page', '853-0653', 'Google', '[email protected]']
['Tim Cook', '133-0419', 'Apple', '[email protected]']
['Steve Ballmer', '456-7893', 'Developers!', '[email protected]']
Any tips on how to produce a cleaner output would be greatly appreciated, as I am beginner and I find all of this quite confusing. Many thanks in advance.
You could use format to left justify your output. For example,
f = open("contactlist.csv")
csv_f = csv.reader(f)
for row in csv_f:
print('{:<15} {:<15} {:<20} {:<25}'.format(*row))
Output:
Name Phone Company Email
Elon Musk 454-6723 SpaceX [email protected]
Larry Page 853-0653 Google [email protected]
Tim Cook 133-0419 Apple [email protected]
Steve Ballmer 456-7893 Developers! [email protected]
You can read more about format here. The < symbol left-aligns the text, and the number specifies the width of the string. Each {} can include a positional argument before the colon : - if they are omitted, the strings will appear in the order of the arguments in the unpacked list row.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With