Распечатать календарь, начиная с сегодняшней даты - PullRequest
1 голос
/ 12 июля 2020

Я хочу напечатать календарь текущего месяца, но начиная с сегодняшней даты в python. Как я могу это сделать? Единственное, что я думал попробовать, было:

import calendar
y = int(input("Input the year : "))
m = int(input("Input the month : "))
d = int (input("Input the day: "))
print(calendar.month(y, m, d))

, что, оглядываясь назад, является глупой идеей, потому что все, что он сделал, было:

результат печати

но, учитывая мой трехдневный опыт работы в python, это показалось достаточно глупым, чтобы работать.

Я хочу, чтобы конечный результат выглядел примерно так:

желаемый результат

По сути, я хочу, чтобы в календаре отображались только оставшиеся дни месяца, а не весь месяц.

1 Ответ

0 голосов
/ 12 июля 2020

Метод календаря возвращает строку. Вы можете использовать обычные методы манипулирования строкой, чтобы изменить строку перед печатью - например, замена регулярного выражения:

import calendar
import re

y = 2020
m = 5 
d = 15
h = calendar.month(y, m, 3) # 3 is the width of the date column, not the day-date
print(h)
print()

# replace all numbers before your day, take care of either spaces or following \n

for day in range(d):
    # replace numbers at the start of a line
    pattern = rf"\n{day} "
    h = re.sub(pattern, "\n  " if day < 10 else "\n   ", h)
    # replace numbers in the middle of a line
    pattern = rf" {day} "
    h = re.sub(pattern, "   " if day < 10 else "    ", h)
    # replace numbers at the end of a line
    pattern = rf" {day}\n"
    h = re.sub(pattern, "  \n" if day < 10 else "   \n", h)

print(h)

Вывод:

          May 2020
Mon Tue Wed Thu Fri Sat Sun
                  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  31


# after replacement    

          May 2020
Mon Tue Wed Thu Fri Sat Sun
                           
                           
                 15  16  17
 18  19  20  21  22  23  24
 25  26  27  28  29  30  31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...