Я ищу эффективный способ решения этой проблемы
Допустим, мы хотим найти список слов в строке, игнорируя регистр, но вместо сохранения совпавшей строки нам нужна строка с тем же регистром, что и в исходном списке.
Например:
words_to_match = ['heLLo', 'jumP', 'TEST', 'RESEARCH stuff']
text = 'hello this is jUmp test jump and research stuff'
# Result should be {'TEST', 'heLLo', 'jumP', 'RESEARCH stuff'}
Вот мой текущий подход:
words_to_match = ['heLLo', 'jumP', 'TEST', 'RESEARCH stuff']
Я конвертирую это в следующее регулярное выражение:
regex = re.compile(r'\bheLLo\b|\bjumP\b|\bTEST\b|\bRESEARCH stuff\b', re.IGNORECASE)
Тогда
word_founds = re.findall(regex,'hello this is jUmp test jump and research stuff')
normalization_dict = {w.lower():w for w in words_to_match}
# normalization dict : {'hello': 'heLLo', 'jump': 'jumP', 'test': 'TEST', 'research stuff': 'RESEARCH stuff'}
final_list = [normalization_dict[w.lower()] for w in word_founds]
# final_list : ['heLLo', 'jumP', 'TEST', 'jumP', 'RESEARCH stuff']
final_result = set(final_list)
# final_result : {'TEST', 'heLLo', 'jumP', 'RESEARCH stuff'}
Это мой ожидаемый результат, я просто хочу знать, есть ли более быстрый / более элегантный способ решения этой проблемы.