标签:
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