Can I print 2 calendars side by side?
Peter Otten
__peter__ at web.de
Wed Nov 23 13:57:41 EST 2016
Dayton Jones wrote:
> I'd like to be able to display 2 calendars side by side, instead of
> stacked... is this possible?
I'm too lazy to look around for a ready-to-use solution, so here's my own:
$ cat side_by_side.py
from itertools import zip_longest
def zip_lines(*columns, sep=" "):
columns = [c.splitlines() for c in columns]
widths = [max(len(s) for s in c) for c in columns]
return "\n".join(
sep.join(c.ljust(w) for c, w in zip(row, widths))
for row in zip_longest(*columns, fillvalue="")
)
if __name__ == "__main__":
import calendar
print(zip_lines(calendar.month(2016, 1), calendar.month(2015, 1)))
print()
columns = [calendar.month(2016, month) for month in range(6, 9)]
print(zip_lines(*columns, sep=" | "))
$ python3 side_by_side.py
January 2016 January 2015
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 1 2 3 4
4 5 6 7 8 9 10 5 6 7 8 9 10 11
11 12 13 14 15 16 17 12 13 14 15 16 17 18
18 19 20 21 22 23 24 19 20 21 22 23 24 25
25 26 27 28 29 30 31 26 27 28 29 30 31
June 2016 | July 2016 | August 2016
Mo Tu We Th Fr Sa Su | Mo Tu We Th Fr Sa Su | Mo Tu We Th Fr Sa Su
1 2 3 4 5 | 1 2 3 | 1 2 3 4 5 6 7
6 7 8 9 10 11 12 | 4 5 6 7 8 9 10 | 8 9 10 11 12 13 14
13 14 15 16 17 18 19 | 11 12 13 14 15 16 17 | 15 16 17 18 19 20 21
20 21 22 23 24 25 26 | 18 19 20 21 22 23 24 | 22 23 24 25 26 27 28
27 28 29 30 | 25 26 27 28 29 30 31 | 29 30 31
More information about the Python-list
mailing list