- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE \* MERGEFORMAT 19
python项目练习一:即时标记 60837°C
这是《python基础教程》后面的实践,照着写写,一方面是来熟悉python的代码方式,另一方面是练习使用python中的基本的以及非基本的语法,做到熟能生巧。
这个项目一开始比较简单,不过重构之后就有些复杂了,但是更灵活了。
按照书上所说,重构之后的程序,分为四个模块:处理程序模块,过滤器模块,规则(其实应该是处理规则),语法分析器。
先来说处理程序模块,这个模块的作用有两个,一个是提供那些固定的html标记的输出(每一个标记都有start和end),另一个是对这个标记输出的开始和结束提供了一个友好的访问接口。来看下程序handlers.py:
class Handler:
def callback(self, prefix, name, *args):
method = getattr(self,prefix+name,None)
if callable(method): return method(*args)
def start(self, name):
self.callback(start_, name)
def end(self, name):
self.callback(end_, name)
def sub(self, name):
def substitution(match):
result = self.callback(sub_, name, match)
if result is None: match.group(0)
return result
return substitution
class HTMLRenderer(Handler):
def start_document(self):
print htmlheadtitle.../title/headbody
def end_document(self):
print /body/html
def start_paragraph(self):
print p
def end_paragraph(self):
print /p
def start_heading(self):
print h2
def end_heading(self):
print /h2
def start_list(self):
print ul
def end_list(self):
print /ul
def start_listitem(self):
print li
def end_listitem(self):
print /li
def start_title(self):
print h1
def end_title(self):
print /h1
def sub_emphasis(self, match):
return em%s/em % match.group(1)
def sub_url(self, match):
return a href=%s%s/a % (match.group(1),match.group(1))
def sub_mail(self, match):
return a href=mailto:%s%s/a % (match.group(1),match.group(1))
def feed(self, data):
print data
这个程序堪称是整个“项目”的基石所在:提供了标签的输出,以及字符串的替换。理解起来也比较简单。
再来看第二个模块“过滤器”,这个模块更为简单,其实就是一个正则表达式的字符串。相关代码如下:
self.addFilter(r\*(.+?)\*, emphasis)
self.addFilter(r(http://[\.a-z0-9A-Z/]+), url)
self.addFilter(r([\.a-zA-Z]+@[\.a-zA-Z]+[a-zA-Z]+),mai
您可能关注的文档
最近下载
- 八年级语文《消息二则》.ppt VIP
- 养老护理员初级题库与参考答案.docx VIP
- 第一单元 第1课时 认识1~3(分层作业)数学苏教版一年级上册 (新教材) .pdf
- YD5178-2009通信管道人孔和手孔图集 凌峰.docx VIP
- 人音版小学四年级音乐上电子全册教案.pdf VIP
- 0第一讲 科学社会主义导论.ppt VIP
- 儿科基础知识课件.ppt VIP
- 日本宝理PPS DURAFIDE_1130A1_WF9050_JP_en MSDS报告.pdf
- 标准图集-22J603-1 铝合金门窗.pdf VIP
- 321183-R048-2020(Q321183JH002-2020)先张法预应力混凝土抗拔管桩.docx VIP
文档评论(0)