# -*- coding: utf-8 -*- import sets class Keeper(object): def __init__(self, keep): self.keep = sets.Set(map(ord, keep)) def __getitem__(self, n): if n not in self.keep: return None return unichr(n) def __call__(self, s): return s.translate(self) makefilter = Keeper if __name__ == '__main__': just_vowels = makefilter('aeiouy') print just_vowels(u'four score and seven years ago') # 输出: ouoeaeeyeaao print just_vowels(u'tiger, tiger burning bright') # 输出: ieieuii