[Tutor] Removing lines in string-table
Chris Smith
smichr at bigfoot.com
Tue May 17 17:41:04 CEST 2005
On Tuesday, May 17, 2005, at 08:35 America/Chicago,
tutor-request at python.org wrote:
> I have a string table (don't recall the right word used in Python
> right now) and would like to remove every 'cell' that contains a
> string '_thumb.jpg'. There are 1-> digits before the string if that
> matters. I made a for-loop that does what I want to:
>
> for line in fileNames:
> if line[-10:] == '_thumb.jpg':
> fileNames.remove(line)
>
> But I really doubt that it's not the best way to do this. So, any
> comments are really appreciated.
>
The above will not work if two successive lines contain the target
text. When you remove the one, its neighbor "slides over" to take the
place of the one removed and then when you proceed to the "next" line
you are actually skipping the one that slid over. This could be
remedied with using indices to access the list, but perhaps a better
approach is to use filter or a list comprehension to remove the target
lines:
###
def myfilter(x):
return not x.endswith('_thumb.jpg')
fileNames =filter(myfilter, fileNames)
# OR
fileNames =[x for x in fileNames if not x.endswith('_thumb.jpg')]
###
/c
More information about the Tutor
mailing list