python即时标记_python项目练习一:即时标记

本文介绍了一个Python项目的重构过程,重点讲解了处理程序模块。该模块包含固定HTML标记的输出功能及友好的访问接口。它定义了一个Handler类,实现了回调方法,以及start、end和sub方法。此外,还定义了HTMLRenderer子类,覆盖了各种HTML标签的开始和结束处理,并实现了字符串替换功能。此模块为整个项目奠定了基础,提供了标签输出和字符串处理的核心功能。
摘要由CSDN通过智能技术生成

Python的实践,一方面是来熟悉python的代码方式,另一方面是练习使用python中的基本的以及非基本的语法,做到熟能生巧。

7da6322fe77c382b2ead85d883da0d6c.png

这个项目一开始比较简单,不过重构之后就有些复杂了,但是更灵活了。

按照书上所说,重构之后的程序,分为四个模块:处理程序模块,过滤器模块,规则(其实应该是处理规则),语法分析器。

先来说处理程序模块,这个模块的作用有两个,一个是提供那些固定的html标记的输出(每一个标记都有start和end),另一个是对这个标记输出的开始和结束提供了一个友好的访问接口。来看下程序handlers.py:

class Handler:           '''                       ''                       def callback(self,prefix,name,*args):method * getattr(self,prefix+name,None)               if callable(method):return method(*agrs)           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,math)             f result is None:match.grouo(Θ)

returnresultreturnsubstitutionclass HTMLRenderer(Handler)       ''''''             def start_document(self):

print '

...’             def end_document(self):                     print ''             def start_paragraph(self):                     print '

'              def end_paragraph(self):                     print '

'

def start_heading(self):                     print '

'              def end_heading(self):                     print '

'              def start_list(self):                     print '
  • '

def end_list(self):                     print '

'               def start_listitem(self):                     print ''               def end_listitem(self):                     print ''               def start_title(self):                     print '

'               def end_title(self):                     print '

'               def sub_emphasis(self,match):                     return' %s' & match.group(1)

def sub_url(self,match):                     return'%s' % (match.group(1),match,group(1))              def feed(self.data):

printdata

这个程序堪称是整个“项目”的基石所在:提供了标签的输出,以及字符串的替换。理解起来也比较简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值