Ken*_*att 6 html python calendar
我想我想使用日历模块中内置的pythons来创建带有数据的HTML日历.我说我想是因为我可能会想到一个更好的方法,但现在它有点个人化了.我不知道这是否打算以这种方式使用,但如果你不能至少把这些日子变成一个,那似乎有点无意义<a hrefs>.
这将设置本月的日历,以星期日为第一天.
import calendar
myCal = calendar.HTMLCalendar(calendar.SUNDAY)
print myCal.formatmonth(2009, 7)
Run Code Online (Sandbox Code Playgroud)
它打印
<table border="0" cellpadding="0" cellspacing="0" class="month">\n<tr>
<th colspan="7" class="month">July 2009</th></tr>\n<tr><th class="sun">Sun</th>
<th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th>
<th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th></tr>\n
<tr><td class="noday"> </td><td class="noday"> </td>
<td class="noday"> </td><td class="wed">1</td><td class="thu">2</td><td class="fri">3</td>
<td class="sat">4</td></tr>\n<tr><td class="sun">5</td><td class="mon">6</td><td class="tue">7</td>
<td class="wed">8</td><td class="thu">9</td><td class="fri">10</td>
<td class="sat">11</td></tr>\n<tr><td class="sun">12</td><td class="mon">13</td>
<td class="tue">14</td><td class="wed">15</td><td class="thu">16</td><td class="fri">17</td>
<td class="sat">18</td></tr>\n<tr><td class="sun">19</td><td class="mon">20</td>
<td class="tue">21</td><td class="wed">22</td><td class="thu">23</td><td class="fri">24</td>
<td class="sat">25</td></tr>\n<tr><td class="sun">26</td><td class="mon">27</td>
<td class="tue">28</td><td class="wed">29</td><td class="thu">30</td><td class="fri">31</td>
<td class="noday"> </td></tr>\n</table>\n
Run Code Online (Sandbox Code Playgroud)
我想在呈现html字符串之前将一些数据插入到HTMLCalendar对象中.我只是无法弄清楚如何.
例如
<td class="tue">28<br />[my data]</td>
Run Code Online (Sandbox Code Playgroud)
小智 41
创建一个继承自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)
Run Code Online (Sandbox Code Playgroud)
Len*_*bro 16
日历模块通常没用,但在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就变得微不足道了.
您可以将看似有效的 XMl 的 html 加载到 XML 树中,修改它并再次输出它。例如,这会添加<br/> 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)
Run Code Online (Sandbox Code Playgroud)
我还不知道为什么您需要生成 HTML 日历,但根据需要和您使用的框架,有更好的方法可以做到这一点。