[Python-ideas] dir with a glob?

Georg Brandl g.brandl at gmx.net
Thu Jun 30 19:27:12 CEST 2011


On 30.06.2011 15:09, Mathias Panzenböck wrote:
> I would rather add a grep method to regular expression objects:
> 
> 	def grep(self,sequence):
> 		for s in sequence:
> 			if self.search(s):
> 				yield s
> 
> And a global function to the re module:
> 
> 	def grep(regex,sequence,flags=0):
> 		return re.compile(regex,flags).grep(sequence)
> 
> 
> Then you could do:
> 
> 	re.grep("^i", dir(sp.fft))
> 
> Yes, it would be more to type but it would be more general.

No you couldn't, since this would return <generator ...> -- an explicit
list() would be required.

> OT: I think it would be good if regular expressions would be callable with this method:
> 
> 	def __call__(self,s):
> 		return self.search(s) is not None
> 
> Then one could use it in a filter expression:
> 
> 	filter(re.compile("^i"), dir(sp.fft))

What's wrong with

   filter(re.compile("^i").search, dir(sp.fft))

?  And for non-interactive use, you almost always have a compiled regex object
already, so that this becomes

   filter(rex.search, seq)

which is not sufficiently harder than

   rex.grep(seq)

to justify a new regex method.  (Also, people won't be able to remember if
grep() uses match() or search().)

Georg




More information about the Python-ideas mailing list