标签:
import re def match_sxz(noun): return re.search(‘[sxz]$‘,noun) def apply_sxz(noun): return re.sub(‘$‘,‘es‘,noun) def match_h(noun): return re.search(‘[^aeioudgkprt]h‘,noun) def apply_h(noun): return re.sub(‘$‘,‘es‘,noun) def match_y(noun): return re.search(‘[^aeiou]y$‘,noun) def apply_y(noun): return re.sub(‘y$‘,‘ies‘,noun) def match_default(noun): return True def apply_default(noun): return re.sub(‘$‘,‘s‘,noun) rules = ((match_sxz, apply_sxz), (match_h, apply_h), (match_y, apply_y), (match_default, apply_default) ) def plural(noun): for match_rule, apply_rule in rules: if(match_rule(noun)): return apply_rule(noun) print(plural(‘body‘));
改成动态创建函数的方式
import re def build_match_apply_function(pattern, search, replace): def match_rule(word): return re.search(pattern, word) def apply_rule(word): return re.sub(search, replace, word) return (match_rule, apply_rule) patterns = ( (‘[sxz]$‘,‘$‘,‘es‘), (‘[^aeioudgkprt]h$‘,‘$‘,‘es‘), (‘(qu|[^aeiou]y$)‘,‘y$‘,‘ies‘), (‘$‘,‘$‘,‘s‘), ) rules = [build_match_apply_function(pattern, search, replace) for (pattern, search, replace) in patterns] def plural(noun): for match_rule, apply_rule in rules: if(match_rule(noun)): return apply_rule(noun) print(plural(‘body‘));
标签:
原文地址:http://www.cnblogs.com/joyber/p/4343653.html