У меня есть список кортежей. Некоторые кортежи должны быть исключены из списка в зависимости от их значений. Пример списка с 2-кортежами ниже:Python list comprehension условный фильтр синтаксис
orig_list = [('mydomain', '20150726', 'e-buyeasy.com', 'www.ujizlhekw.e', '1',
'1', '1', '1', '100.0', '0.0'),
('myotherdomain', '20150726', 'floating-share-buttons.com', '', '26',
'26', '26', '26', '100.0', '0.0')]
Я создал функцию, которая использует сопоставление регулярных выражений из двух элементов кортежей против других списков «подстановки». Функция возвращает True или False в зависимости от соответствия спискам поиска.
def tupMatch(tup):
sourceReg="semalt.*","anticrawler.*","best-seo-offer.*","best-seo-solution.*","buttons-for-website.*","buttons-for-your-website.*","7makemoneyonline.*","-musicas*-gratis.*","kambasoft.*","savetubevideo.*","ranksonic.*","medispainstitute.*","offers.bycontext.*","100dollars-seo.*","sitevaluation.*","dailyrank.*","videos-for-your-business.*","videos-for-your-business.*","success-seo.*","4webmasters.*","get-free-traffic-now.*","free-social-buttons.*","trafficmonetizer.*","traffic2money.*","floating-share-buttons.*"
hostnameReg="mydomain.*","myotherdomain.*"
sourceReg2 = "(" + ")|(".join(sourceReg) + ")"
hostnameReg2 = "(" + ")|(".join(hostnameReg) + ")"
sourceMatch = re.match(sourceReg2, tup[2].lower())
hostMatch = re.match(hostnameReg2, tup[3].lower())
if (not sourceMatch) and (hostMatch):
True
else:
False
return
У меня есть список, который фильтрует исходный список в зависимости от результата функции.
filtered_list = [tup for tup in orig_list if tupMatch(tup)]
Однако на самом деле это не фильтрация списка. Я ожидаю, что 'tupMatch (tup)' вернет либо True, либо False, и в понимании списка будут только кортежи True.
Что мне здесь не хватает?
Ах, совершенный благодаря – curtisp