Очистка строки, удаление одиночных символов апострофов из списка слов содержащих апостроф

Всех приветствую!

Есть некие трудности в обработки списков. Предположим есть список:

words = ["we're", "'", "'''", "he's", "'abc", "ghe'", 'hello', "'h", "h'"]

Необходимо удалить только одиночные апострофы из списка, не затрагивая слова содержащие апострофы. Пробелов в списке нет, как и других символов из набора:

from string import punctuation

Результат должен выглядеть так:

result_words = ["we're", "he's", "'abc", "ghe'", 'hello', "'h", "h'"]

Ответы (2 шт):

Автор решения: strawdog
words = ["we're", "'", "'''", "he's", "'abc", "ghe'", 'hello', "'h", "h'"]

res = ([x for x in words if "".join(set(x))!="'"])
print(res)

["we're", "he's", "'abc", "ghe'", 'hello', "'h", "h'"]

→ Ссылка
Автор решения: CrazyElf

Ещё как вариант - проверка, что слово состоит не только из символов пунктуации (хотя в вашем случае нужно проверять только апострофы, но обычно задача ставится немного шире):

from string import punctuation

words = ["we're", "'", "'''", "he's", "'abc", "ghe'", 'hello', "'h", "h'"]
result_words = [w for w in words if set(w) - set(punctuation)]
print(result_words)

Вывод:

["we're", "he's", "'abc", "ghe'", 'hello', "'h", "h'"]
→ Ссылка