Я использую Mac Airbook, откройте ваш терминал и введите
sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/bin/subl
Затем введите простой subl и имя файла
subl index.py
Вы можете загрузить html, который кажется действительным XMl, в дерево XML, изменить его и снова вывести.
например, это добавляет
к каждому узлу Tue td.
cool
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, но есть более эффективные способы сделать это в зависимости от потребностей и структуры вы используете.
Трудно сказать, не зная точно, чего вы пытаетесь достичь, но вот одна идея.
Вместо того, чтобы печатать 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
Он делает то, что вы хотите, но довольно уродливо.
Модуль календаря обычно был довольно бесполезным, но в 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-кода становится тривиальным упражнением.
Создание нового класса, унаследованного от 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"> </td>' # day outside month
else:
return '<td class="%s"><a href="%s">%d</a></td>' % (self.cssclasses[weekday], weekday, day)