Ok i got a solution, probably inelegant though
i create another list in titlecase of the tags i want to do a partial search for, as i decided i didnt want to search for them all (for example science is in science fiction so i got both tags which i didnt really want)
Code:
def evaluate(self, formatter, kwargs, mi, locals, val):
list1 = val
l2 = ['adult', 'adventure', 'anthologies', 'biography', 'childrens', 'classics', 'drugs', 'fantasy', 'food', 'football', 'health', 'history', 'historical', 'horror', 'humour', 'inspirational', 'modern', 'music', 'mystery', 'non-fiction', 'poetry', 'political', 'philosophy', 'psychological', 'reference', 'religion', 'romance', 'science', 'science fiction', 'self help', 'short stories', 'sociology', 'spirituality', 'suspense', 'thriller', 'travel', 'vampires', 'war', 'western', 'writing', 'young adult']
l1 = [l.strip() for l in list1.split(',') if l.strip()]
l1lcase = [icu_lower(l) for l in l1]
res = set()
for idx,item in enumerate(l1lcase):
if item in l2:
res.add(l1[idx])
l3 = ['Adult', 'Adventure', 'Anthologies', 'Biography', 'Childrens', 'Classics', 'Drugs', 'Fantasy', 'Food', 'Football', 'Health', 'History', 'Historical', 'Horror', 'Humour', 'Inspirational', 'Modern', 'Music', 'Mystery', 'Non-Fiction', 'Poetry', 'Political', 'Philosophy', 'Psychological', 'Reference', 'Religion', 'Romance', 'Science fiction', 'Self Help', 'Short Stories', 'Sociology', 'Spirituality', 'Suspense', 'Thriller', 'Travel', 'Vampires', 'War', 'Western', 'Writing', 'Young Adult']
for item in l1lcase:
for item2 in l3:
check = item2.lower()
if check in item:
res.add(item2)
break
for item in l1lcase:
if 'scary' in item or 'spooky' in item:
res.add('Horror')
break
return ', '.join(res)
need to do some more tests but its looking good
Thanks again for your help!