Преобразование текста в список слов с удалением знаков препинания

Вводится нормализованный текст, который кроме слов может содержать определенные знаки препинания. Программа строит список слов, знаки препинания исключаются.

Примечание. Под нормализованным текстом будем понимать текст, в котором пробел ставится после знаков препинания, за исключением открывающей скобки (пробел перед ней).

str = input("Write down or insert some text:\n")

punctuation = ['.',',',':',';','!','?','(',')']

wordList = str.split()

i = 0
for word in wordList:
    if word[-1] in punctuation:
        wordList[i] = word[:-1]
        word = wordList[i]
    if word[0] in punctuation:
        wordList[i] = word[1:]
    i += 1

i = 0
while i < len(wordList):
    print(wordList[i], end=' ')
    i += 1
    if i%5 == 0:
        print()

С комментариями:

# ввод текста
str = input("Write down or insert some text:\n")

# знаки препинания, которые могут содержаться в тексте
punctuation = ['.',',',':',';','!','?','(',')']

# Метод split() без аргументов разделяет строку
# по символам пробела.
# Получаем список слов, которые могут начинаться
# или заканчиваться знаком препинания.
wordList = str.split()

# переменная-индекс слов в списке wordList
i = 0

# Извлекается каждое слово из списка.
for word in wordList:
    # Если последний символ этого слова содержится
    # в списке punctuation,
    if word[-1] in punctuation:
        # то на место (i) этого слова в список wordList
        # помещается копия этого слова, но без последнего символа.
        # Срез [:-1] обозначает взять последовательность от ее начала
        # до последнего элемента (не включая его).
        wordList[i] = word[:-1]
        # Заменяется значение word на текущее, иначе алгоритм ниже
        # будет обрабатывать старое слово, а не то, у которого уже мог
        # быть удален последний символ.
        word = wordList[i]
    # Еще если первый символ слова содержится в списке знаков препинания,
    if word[0] in punctuation:
        # то переписать слово на его копию без первого символа.
        # Срез [1:] обозначает взять последовательность от элемента
        # с индексом 1 (он второй по счету) до конца.
        wordList[i] = word[1:]
    # увеличение переменной-индекса, т. е. переход к следующему слову
    i += 1

# Код ниже выводит слова по пять штук в строке.
# Можно так не делать, а просто вывести список командой
# print(wordList)
i = 0
while i < len(wordList):
    print(wordList[i], end=' ')
    i += 1
    if i%5 == 0:
        print()

Пример исполнения программы:

Write down or insert some text:
one (two) three, four! five. Six seven (eight, nine, ten)
one two three four five 
Six seven eight nine ten