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 > > >>> l = ["My skull hurts", "Drive the thruway", "Interchangability is > not my forte"] > >>> junkList =["interchange", "ifferen", "thru"] > >>> [x for x in l if not [j for j in junkList if x.lower().find(j) > -1]] > ['My skull hurts', 'Interchangability is not my forte'] > ^ Is there an "e" missing? > > Because I don't like RegExps! ;-) > > HTH, > Wolfram > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor