Efficient mechanism for str.startswith on a set.

Brian Cole brianc at temple.edu
Tue Jan 10 15:48:54 CET 2006


I need to iterate through a file, checking whether each line
'startswith()' a string that belongs to a set.

Normally, the most efficient way I would do this would be:
strs=set(['foo','bar'])
for line in file:
    if line.strip() in strs:
        print line

However, for this case I need to do a startswith like this:
for line in file:
     for s in strs:
         if line.startswith(s):
             print line

This is obviously the least efficient manner to do this as I'll always
be iterating over the entire 'strs'. I know I could make a binary tree
out of 'strs' but that's a little more work that don't have time to do
today. I know there should be something out there if I just ask nicely
enough.

Thanks ahead of time.

-Brian



More information about the Python-list mailing list