Edward Elliott <[EMAIL PROTECTED]> wrote: > I'm looking for the "best" way to strip a large set of chars from a filename > string (my definition of best usually means succinct and readable). I > only want to allow alphanumeric chars, dashes, and periods. This is what I > would write in Perl (bless me father, for I have sinned...): > > $filename =~ tr/\w.-//cd, or equivalently > $filename =~ s/[^\w.-]// > > I could just use re.sub like the second example, but that's a bit overkill. > I'm trying to figure out if there's a good way to do the same thing with > string methods. string.translate seems to do what I want, the problem is > specifying the set of chars to remove. Obviously hardcoding them all is a > non-starter.
(untested code, but, the general idea shd be correct)...: class KeepOnly(object): allchars = ''.join(chr(i) for i in xrange(256)) identity = string.maketrans('', '') def __init__(self, chars_to_keep): self.chars_to_delete = self.allchars.translate( self.identity, chars_to_keep) def __call__(self, some_string): return some_string.translate(self.identity, self.chars_to_delete) Alex -- http://mail.python.org/mailman/listinfo/python-list