躺在沙灘上的小豬

          快樂的每一天

          python and Template.

          也許說法不正確,但是目前我能理解的就是替換,替換指定文本中的內容。
          例如:

          <a name="$code$"></a>
          <div class="infomark">$title$</div>
          <div class="info" style="background:#F4F4F4">
          <pre>
              $content$
          </pre>   
          </div>
          <div align="right" class="right"><a href="#000">Top</a></div>
          <br>
          <br>

          我要做的只是替換其中特定格式的 $code$,$title$,$conent$,而已。

          那么我們用re可以輕松搞定(當然更復雜的template需要更深入的去學習...)。
          --------------

          import re 
          import sys 
          
          class Template: 
              """ 
                  簡單的模板,用于替換指定文本的特殊字符 
             例如:$code$ 
              """ 
              def __init__(self,filename,params,prefix='$',suffix='$'): 
                  if not filename: 
                      print 'Error:' 
                      sys.exit(-1) 
                  else: 
                      self.filename=filename            
                  self.text=''    
                  self.params=params 
                  self.prefix=prefix 
                  self.suffix=suffix 
          
              def getKeys(self): 
                  """ 
                      返回所有的要求替換匹配的表達式 
                  """ 
                  return params.keys() 
          
              def parse(self): 
                  
                  self.getContent() 
                    
                  keys = self.params.keys() 
                  for key in keys: 
                      value = self.params[key] 
                      self.__replace(key,value) 
                  return self.text 
          
              
              def getContent(self): 
                  """ 
                      讀取文件的內容 
                  """ 
                  f = open(self.filename) 
                  lines = f.readlines() 
                  self.text = ''.join(line for line in lines) 
                  
              def __replace(self,key,value):        
                  #m = re.match(prefix+key+suffix,text) 
                  pattern = '\.*\\'+self.prefix+key+'\\'+self.suffix+'\.*' 
                  self.text = re.sub(pattern,value,self.text) 
          
          if __name__=='__main__': 
              filename = 'D:\\workspace\\style\\test\\template.xt' 
              params = {'code':'001001','title':'測試','content':'的嘎公司今后;飛機庫'} 
              t = Template(filename,params) 
              print t.parse()

          ------------- ------------- ------------- ------------- ------------- ------------- ------------- -------------

          這樣,我們的python代碼可以更簡單點了

          我們將以前的代碼做修改,如下:

          import cx_Oracle 
          from Template import * 
          
          def parse(): 
              '''generate the content html''' 
          
              sql = '''select t.bz_code code, t.bz_title title, t.bz_content content 
                  from bz_czzs t 
                  order by t.bz_code''' 
          
              connection = cx_Oracle.connect( 'etasadmin/etasadmin@zhongju' ) 
              cursor = connection.cursor() 
              cursor.execute(sql) 
              item=cursor.fetchone() 
              i=1; 
              print 'begin' 
              while item: 
                  i+=1 
                  print 'parsing ',i,' item....' 
                  writeContent(item[0],item[1],str(item[2])) 
                  item=cursor.fetchone() 
          
          def writeContent(code,title,content): 
              filedir='D:\\m\\content\\' 
              
              params = {'code':code,'title':title,'content':content} 
              t = Template('D:\\workspace\\style\\test\\template.xt',params) 
              s = t.parse() 
          
              out = open(filedir+code+".html",'w') 
              out.write(s) 
              out.flush() 
              out.close() 
              
          if __name__=='__main__': 
              print 'parse..................'    
              parse() 
              print 'end'

          參考文檔:
          http://docs.python.org/lib/module-re.html

          關于template的進一步思考:
          一:不用那么復雜的制定文件全名:
          'D:\\workspace\\style\\test
          template.xt'
          代碼實現從當前的classpath中自動尋找該文件,并且制定文件后綴名。
          那么就變的如下簡單了。

          t = Template('template',params)

          posted on 2005-09-20 18:53 martin xus 閱讀(1538) 評論(1)  編輯  收藏 所屬分類: python

          主站蜘蛛池模板: 宣化县| 鄱阳县| 延吉市| 孝感市| 唐山市| 永安市| 筠连县| 德钦县| 普兰县| 延安市| 大新县| 郓城县| 含山县| 行唐县| 德兴市| 徐水县| 遂宁市| 鲜城| 大悟县| 石泉县| 武平县| 延安市| 邯郸市| 哈尔滨市| 石柱| 宁海县| 阿坝县| 米泉市| 高雄县| 杭锦旗| 花莲市| 肃南| 沧源| 延安市| 紫阳县| 天峨县| 湖南省| 伊春市| 乌拉特前旗| 读书| 怀集县|