[Tutor] partial string matching in list comprehension?
Wolfram Kraus
kraus at hagen-partner.de
Fri May 26 09:41:55 CEST 2006
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]]
>>> 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
More information about the Tutor
mailing list