календарь Python. HTMLCalendar

Я использую Mac Airbook, откройте ваш терминал и введите

 sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/bin/subl

Затем введите простой subl и имя файла

 subl index.py
6
задан Kenny Pyatt 9 July 2009 в 02:23
поделиться

4 ответа

Вы можете загрузить html, который кажется действительным XMl, в дерево XML, изменить его и снова вывести. например, это добавляет
cool
к каждому узлу Tue td.

import calendar
import xml.etree.ElementTree as etree

myCal = calendar.HTMLCalendar(calendar.SUNDAY)
htmlStr = myCal.formatmonth(2009, 7)
htmlStr = htmlStr.replace(" "," ")

root = etree.fromstring(htmlStr)
for elem in root.findall("*//td"):
    if elem.get("class") != "tue":
        continue
    elem.text += "!"

    br = etree.SubElement(elem, "br")
    br.tail = "cool!"

print etree.tostring(root)

Я еще не знаю, зачем вам создавать календарь HTML, но есть более эффективные способы сделать это в зависимости от потребностей и структуры вы используете.

0
ответ дан 8 December 2019 в 02:02
поделиться

Трудно сказать, не зная точно, чего вы пытаетесь достичь, но вот одна идея.

Вместо того, чтобы печатать myCal.formatmonth (2009, 7), почему бы вам не напечатать назначить его строке. Затем вы могли бы манипулировать им, например, с помощью регулярного выражения.

Вот действительно плохой пример:

import calendar
import re

myCal = calendar.HTMLCalendar(calendar.SUNDAY)
myStr = myCal.formatmonth(2009, 7)

re.sub('28', '28<br/>[My Data]', myStr)

print myStr

Он делает то, что вы хотите, но довольно уродливо.

0
ответ дан 8 December 2019 в 02:02
поделиться

Модуль календаря обычно был довольно бесполезным, но в 2.5 он представил объект Calendar. Это не будет отображать календарь HTML для вас, но у него есть множество методов, которые помогут вам отобразить календарь.

Например, monthdatescalendar (год, месяц) предоставит вам список всех недель в данном месяце, где каждая неделя, в свою очередь, представляет собой список семи дней. Таким образом, monthdatescalendar (2009,7) будет начинаться с [[datetime.date (2009, 6, 29), datetime.date (2009, 6, 30), ] и заканчиваться на datetime.date ( 2009, 8, 1), datetime.date (2009, 8, 2)]]

Таким образом, создание нужного HTML-кода становится тривиальным упражнением.

16
ответ дан 8 December 2019 в 02:02
поделиться

Создание нового класса, унаследованного от HTMLCalendar. Переопределите метод formatday.

Кто бы ни делал комментарии вроде «эта библиотека бесполезна», очевидно, не понимает Python.

class EmployeeScheduleCalendar(HTMLCalendar):
    def formatday(self, day, weekday):
        """
          Return a day as a table cell.
        """
        if day == 0:
            return '<td class="noday">&nbsp;</td>' # day outside month
        else:
            return '<td class="%s"><a href="%s">%d</a></td>' % (self.cssclasses[weekday], weekday, day)
41
ответ дан 8 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: