The question is not exactly trivial. One way to check whether the words are contained in the columns is to use zip to take a letter from each column and form column strings:
# Criar lista de palavras e matriz
palavras = ['python', 'hub']
matriz = \
"""u l i o a
e a p b e
a r y l s
j i t u a
e e h u b
e u o r r
c t n e p
b i o s b"""
# Pegar linhas da matriz e remover espaços
linhas = [linha.replace(' ', '') for linha in matriz.split('\n')]
print(linhas)  # ['ulioa', 'eapbe', 'aryls', ...]
# Usamos zip pra pegar uma letra de cada linha e join
# pra formar uma string pra cada coluna
colunas = [''.join(coluna) for coluna in zip(*linhas)]
print(colunas)  # ['ueajeecb', 'larieuti', 'ipythono' ...]
# Criamos um set pra guardar a posição das letras que
# vamos mostrar na representação final.
letras_a_mostrar = set()
# Pra cada palavra na nossa lista de palavras a procurar,
# vemos se a palavra está em uma das linhas ou colunas.
# Se estiver, adicionamos a posição de todas as letras
# da palavra ao set letras_a_mostrar.
for palavra in palavras:
    # Pra cada linha na matriz...
    for y, linha in enumerate(linhas):
        # Se a palavra que estamos verificando estiver
        # na linha...
        if palavra in linha:
            # Encontrar a posição de início e fim da palavra na linha
            comeco_palavra = linha.find(palavra)
            fim_palavra = linha.find(palavra) + len(palavra)
            # Adicionar as posições de início, fim, e intermediárias
            for x in range(comeco_palavra, fim_palavra):
                letras_a_mostrar.add((x, y))
    # Fazer a mesma coisa pra colunas da matriz.
    # Como temos um set, não importa se tentarmos
    # adicionar posições duplicadas (se duas palavras se
    # cruzarem)
    for x, coluna in enumerate(colunas):
        if palavra in coluna:
            comeco_palavra = coluna.find(palavra)
            fim_palavra = coluna.find(palavra) + len(palavra)
            for y in range(comeco_palavra, fim_palavra):
                letras_a_mostrar.add((x, y))
print(letras_a_mostrar)  # {(2, 6), (4, 4), (2, 1), ... ]
# Pra apresentar o resultado destacado, iteramos sob
# as posições x, y da matriz e printamos a letra da
# posição se ela estiver na lista de letras a mostrar
for y in range(len(linhas)):
    for x in range(len(linhas[y])):
        if (x, y) in letras_a_mostrar:
            print(linhas[y][x] + ' ', end='')
        else:
            print('. ', end='')
    print('')  # Linha nova
# . . . . .
# . . p . .
# . . y . .
# . . t . .
# . . h u b
# . . o . .
# . . n . .
# . . . . .