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

Thanks ahead of time.


More information about the Python-list mailing list