Tag Archives: Closures

今天看Dive into Python 3 看到闭合与生成器,里面描述了一个使用闭合和文件来进行模式匹配的例子(P200),这里记录下。
先把我最后修改完的程序放出来:

  1. import re  
  2.   
  3. def build_match_and_apply_functions(pattern, search, replace):   
  4.   
  5.     def matches_rule(word):   
  6.         return re.search(pattern, word)   
  7.   
  8.     def apply_rule(word):   
  9.         return re.sub(search, replace, word)   
  10.   
  11.     return (matches_rule, apply_rule)   
  12.   
  13. rules = []   
  14.   
  15. with open(‘plural4-rules.txt’, encoding = ‘utf-8′) as pattern_file:   
  16.     for line in pattern_file:   
  17.         pattern, search, replace = line.split(none, 3)   
  18.         print(‘pattern:’, pattern, ‘search:’, search, ‘replace:’, replace, ‘\n’)   
  19.         rules.append(build_match_and_apply_functions(pattern, search, replace))   
  20.   
  21. def plural(noun):   
  22.     i = 1   
  23.     for matches_rule, apply_rule in rules:   
  24.         print(i, matches_rule(noun))   
  25.         i = i + 1   
  26.         if matches_rule(noun):   
  27.             return apply_rule(noun)   
  28.   
  29. if __name__ == ‘__main__‘:   
  30.     print(plural(‘box’))  

Read More →