'If item in list contains a keyword remove it

I have a list of items

['InvalidAddressBecauseDestinationIsAlsoSource', 
'NotEnoughBalanceBecauseDestinationNotCreated', 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 
'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', 
'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA', 
'BPFLoader1111111111111111111111111111111111',  
'gatbGF9DvLAw3kWyn1EmH5Nh1Sqp8sTukF7yaQpSc71', 
'ni1jXzPTq1yTqo67tUmVgnp22b1qGAAZCtPmHtskqYG', 
'mos1x4hXqmmmWz5s8btUsM1aHxdY3tUvNHf7sfK37Y6', 
'yukonJRbdjiiSMqXmMq3mVHsVTLg7FSzEpVwZU3fzzr', 
'tgaxdij8CgAbfDDkhtkvZgEtwLPrVEXTQe3L4zkA7gE', 
'tniC2HX5yg2yDjMQEcUo1bHa44x9YdZVSqyKox21SDz', 
'tmo7YXBjHgJ74StE7inz5XkyJQ5dq9CEy5YERZfx6iZ', 
'tyukPUmtWLzTx7YqJus93gBQ1u3tYispTJDXnQXp7Hp', 
'gatem74V238djXdzWnJf94Wo1DcnuGkfijbf3AuBhfs', 
'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL', 
'gatem74V238djXdzWnJf94Wo1DcnuGkfijbf3AuBhfs', 
'cndy3Z4yapfJBmL3ShUp5exZKqR3z33thTzeNMm2gRZ', 
'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s', 
'EfLbqXBzgbXURKsjE5UTbf9khGW9Ck9UvzFr5Uyh53pw']

and I have a list of keywords

LIST2 = ['meta', 'cndy', '11111111', 'Token', 'gate', 'Invalid', 'NotEnough']

and I want to remove items from the first list if they match any item in the second list

I tried

LIST2 = ['meta', 'cndy', '11111111', 'Token', 'gate', 'Invalid', 'NotEnough']
finalResult = newlist = [m for m in LIST1if not any(k for k in LIST2 if k in ' '.join(m))]

but it doesnt work



Solution 1:[1]

You've got your membership testing wrong, you want:

finalResult = [m for m in LIST1 if not any(k in m for k in LIST2)]

Solution 2:[2]

Your problem is this part:

' '.join(m)

Because for example this string:

'InvalidAddressBecauseDestinationIsAlsoSource'

becomes

'I n v a l i d A d d r e s s B e c a u s e D e s t i n a t i o n I s A l s o S o u r c e'

and obviously 'Invalid' cannot be found within 'I n v a l i d'.

So replace that part:

' '.join(m)

with simply:

m

thus having:

newlist = [m for m in LIST1 if not any(k for k in LIST2 if k in m)]

and it will work.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Jon Clements
Solution 2