On 2016-11-23 18:02, Dayton Jones wrote:
I'd like to be able to display 2 calendars side by side, instead of stacked... 
is this possible?

for instance:

    print(calendar.month(year_a,month))
    print()
    print(calendar.month(year_b,month))

prints:
     June 1971
Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30


     June 2017
Mo Tu We Th Fr Sa Su
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30



but what I would like is:
     June 1971               June 2017
Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6              1  2  3  4
 7  8  9 10 11 12 13     5  6  7  8  9 10 11
14 15 16 17 18 19 20    12 13 14 15 16 17 18
21 22 23 24 25 26 27    19 20 21 22 23 24 25
28 29 30                26 27 28 29 30

The functions return strings, so you can split them into lines:

rows_a = calendar.month(year_a, month).splitlines()
rows_b = calendar.month(year_b, month).splitlines()

You can then zip them together:

rows = ['{} {}'.format(row_a, row_b) for row_a, row_b in zip(rows_a, rows_b)]

However:

1. The 2 months might have a different number of rows. 'zip' will truncate to the shorter one, so use itertools.zip_longest instead (give it a fillvalue of '').

2. The lines aren't all the same length, so you'll need to pad the left-hand one to the correct length (20 characters) to make everything line-up.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to