国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python通過正則表達式選取callback的方法

2020-01-04 18:02:08
字體:
供稿:網(wǎng)友

這篇文章主要介紹了Python通過正則表達式選取callback的方法,涉及Python正則表達式及回調(diào)函數(shù)的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Python通過正則表達式選取callback的方法。分享給大家供大家參考。具體如下:

最近在瞎想怎么通過xpath去精確抓取文章的正文,跟parselets類似的想法,只不過更簡單。

代碼設(shè)計上采用正則表達式匹配URL,再選擇callback handler的方式,主要參考web.py的分發(fā)器(Dispatcher)。

當然,這個實現(xiàn)比較老土一些,全部用function的方式回調(diào),沒有用類。

  1. #!/bin/env python 
  2. import re, sys 
  3. # Define parser first. 
  4. def baidu(username): 
  5.   # Business logic 
  6.   return "Using parser Baidu. and the user's name is: %s." % username 
  7. def qzone(uin): 
  8.   # Business logic 
  9.   return "Using parser Qzone, and the user's QQ is: %s." % uin 
  10. # From web.py 
  11. def group(seq, size):#{{{ 
  12.   ""
  13.   Returns an iterator over a series of lists of length size from iterable. 
  14.     >>> list(group([1,2,3,4], 2)) 
  15.     [[1, 2], [3, 4]] 
  16.     >>> list(group([1,2,3,4,5], 2)) 
  17.     [[1, 2], [3, 4], [5]] 
  18.   ""
  19.   def take(seq, n): 
  20.     for i in xrange(n): 
  21.       yield seq.next() 
  22.   if not hasattr(seq, 'next'): 
  23.     seq = iter(seq) 
  24.   while True: 
  25.     x = list(take(seq, size)) 
  26.     if x: 
  27.       yield x 
  28.     else
  29.       break 
  30. #}}} 
  31. def parser_init(url,mapping): 
  32.   for pat, what in group(mapping,2): 
  33.     result = re.compile('^' + pat + '$').match(url) 
  34.     if result: 
  35.       return what, [x for x in result.groups()] 
  36.   return None, None 
  37. if __name__ == '__main__'
  38.   mapping = ( 
  39.       'http://(?:hi|space).baidu.com/([^/]+)(?:/.*)?','baidu'
  40.       'http://(/d+).qzone.qq.com(?:/.*)?','qzone'
  41.       ) 
  42.   (func, args) = parser_init(sys.argv[1],mapping) 
  43.   if func: 
  44.     callback = func 
  45.     if func in globals(): 
  46.       callback = globals()[func] 
  47.     if callable(callback): 
  48.       print callback(*args) 
  49.   else
  50.     print 'No parser found.'

希望本文所述對大家的Python程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 多伦县| 林周县| 满洲里市| 庆阳市| 陆丰市| 临汾市| 阜新| 兴宁市| 家居| 大港区| 长顺县| 太谷县| 大姚县| 拉孜县| 莒南县| 金阳县| 元朗区| 中超| 淳安县| 贵阳市| 高青县| 五大连池市| 宣恩县| 九龙坡区| 湄潭县| 灯塔市| 东乡| 荆门市| 澳门| 依安县| 泰和县| 札达县| 南昌县| 英德市| 德庆县| 合作市| 望都县| 尼勒克县| 沧州市| 广水市| 天津市|