python项目实践

python项目实践

ID:47102482

大小:513.68 KB

页数:19页

时间:2019-08-03

python项目实践_第1页
python项目实践_第2页
python项目实践_第3页
python项目实践_第4页
python项目实践_第5页
资源描述:

《python项目实践》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、python项目练习一:即时标记60837°C这是《python基础教程》后面的实践,照着写写,一方面是来熟悉python的代码方式,另一方面是练习使用python中的基本的以及非基本的语法,做到熟能生巧。这个项目一开始比较简单,不过重构之后就有些复杂了,但是更灵活了。按照书上所说,重构之后的程序,分为四个模块:处理程序模块,过滤器模块,规则(其实应该是处理规则),语法分析器。先来说处理程序模块,这个模块的作用有两个,一个是提供那些固定的html标记的输出(每一个标记都有start和end),另一个是对这个标记输出的

2、开始和结束提供了一个友好的访问接口。来看下程序handlers.py:classHandler:''''''defcallback(self,prefix,name,*args):method=getattr(self,prefix+name,None)ifcallable(method):returnmethod(*args)defstart(self,name):self.callback('start_',name)defend(self,name):self.callback('end_',name)defs

3、ub(self,name):defsubstitution(match):result=self.callback('sub_',name,match)ifresultisNone:match.group(0)returnresultreturnsubstitutionclassHTMLRenderer(Handler):''''''defstart_document(self):print'...'defend_document(sel

4、f):print''defstart_paragraph(self):print'

'defend_paragraph(self):print'

'defstart_heading(self):print'

'defend_heading(self):print'

'defstart_list(self):print'
    'defend_list(self):19print'
'defstart_listitem(self):print'
  • 'def

    5、end_listitem(self):print'

  • 'defstart_title(self):print'

    'defend_title(self):print'

    'defsub_emphasis(self,match):return'%s'%match.group(1)defsub_url(self,match):return'%s'%(match.group(1),match.group(1))defsub_mail(self,match):

    6、return'%s'%(match.group(1),match.group(1))deffeed(self,data):printdata这个程序堪称是整个“项目”的基石所在:提供了标签的输出,以及字符串的替换。理解起来也比较简单。再来看第二个模块“过滤器”,这个模块更为简单,其实就是一个正则表达式的字符串。相关代码如下:self.addFilter(r'*(.+?)*','emphasis')self.addFilter(r'(http://[.a-z0-9A-

    7、Z/]+)','url')self.addFilter(r'([.a-zA-Z]+@[.a-zA-Z]+[a-zA-Z]+)','mail')这就是三个过滤器了,分别是:强调牌过滤器(用×号标出的),url牌过滤器,email牌过滤器。熟悉正则表达式的同学理解起来是没有压力的。再来看第三个模块“规则”,这个模块,抛开那祖父类不说,其他类应该有的两个方法是condition和action,前者是用来判断读进来的字符串是不是符合自家规则,后者是用来执行操作的,所谓的执行操作就是指调用“处理程序模块”,输出前标签、内容

    8、、后标签。来看下这个模块的代码,其实这个里面几个类的关系,画到类图里面看会比较清晰。rules.py:classRule:defaction(self,block,handler):handler.start(self.type)handler.feed(block)handler.end(self.type)returnTrueclassHe

    当前文档最多预览五页,下载文档查看全文

    此文档下载收益归作者所有

    当前文档最多预览五页,下载文档查看全文
    温馨提示:
    1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
    2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
    3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
    4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。