python项目实践教材.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

1112111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档