Kent Johnson wrote: > Wolfram Kraus wrote: > >>doug shawhan wrote: >> >>>I have a series of lists to compare with a list of exclusionary terms. >>> >>> >>> >>>junkList =["interchange", "ifferen", "thru"] >>> >>>The comparison lists have one or more elements, which may or may not >>>contain the junkList elements somewhere within: >>> >>>l = ["My skull hurts", "Drive the thruway", "Interchangability is not my >>>forte"] >>> >>>... output would be >>> >>>["My skull hurts"] >>> >>>I have used list comprehension to match complete elements, how can I do >>>a partial match? >>> >>>def removeJunk(reply, junkList): >>> return [x for x in reply if x not in junkList] >>> >>>It would be so much prettier than searching through each list element >>>for each term - I tend to get lost in a maze of twisty corridors, all alike. >>> >>>Thanks! >>> >>> >> >>Dunno if the performance of this solution is good and if it is more >>readable then RegExps, but here is LC: >>[x for x in l if not [j for j in junkList if x.lower().find(j) > -1]] > > A little cleaner is > [ j for j in junkList if j not in x.lower() ] > > This will compute x.lower() for each element of junkList... > > Kent >
Ahh, yes. Stupid old string methods :-S But you are not quite correct, it has to be [x for x in l if not [j for j in junkList if j in x.lower() ]] See the "not"-ed parts ;-) Wolfram _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor