Программа для отзеркаливания слов в строке, если программе дать строку с 2 пробелами между словами она выдает строку с 1 пробелом

def reverse_words(text):
    text = text[::-1]
    text_lst = text.split()
    text_lst.reverse()
    b = " ".join(text_lst)
    return b

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

Автор решения: DD_N0p

Для переворачивания строки достаточно :

def reverse_words(text):
    return text[::-1]

print(reverse_words('кoт  собака  кот   собака'))

В вашем примере вы переворачиваете строку, разбиваете эту строку на элементы массива, тем самым все пробелы исходной строки удаляются, а с помощью join вы добавляете только по одному пробелу.

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

Дело было вечером, делать было нечего. И так, "фантазия на тему":

import re
from itertools import zip_longest

line = 'Программа для  отзеркаливания   слов и строк'


def words_flip(text: str, flip_words: bool = False, flip_line: bool = False):
    spaces = re.findall(r'\s+', text)
    words = re.findall(r'\S+', text)

    if flip_line:
        spaces.reverse()
        words.reverse()

    new_line_list = [
        (word[::-1] if flip_words else word) + (space if space else '') for word, space in zip_longest(words, spaces)
    ]

    new_line = ''.join(new_line_list)

    print(new_line)


if __name__ == '__main__':
    words_flip(line, flip_words=True, flip_line=True)
→ Ссылка