keyword1 + keyword2
- это строка yankeeduck
, поэтому вы ищете эту строку, и она не будет совпадать, если два слова не связаны таким образом.Вам нужно разрешить что-либо между ними, а также распознать их в обратном порядке.Таким образом, регулярное выражение должно быть:
yankee.*duck|duck.*yankee
Следовательно, код должен быть:
regexp = "%s.*%s|%s.%s"%(keyword1, keyword2, keyword2, keyword1)
keywordLink = soup.find('loc', text=re.compile(regexp)).text
И в случае, если ключевые слова содержат символы, которые являются специальными в регулярном выражении, вы должны избегать их:
keyword1 = re.escape(keywords[0])
keyword2 = re.escape(keywords[1])