Как в конце вместо запятой сделать точку?

s = 'неделя, человек, путь, женщина, книга, путь, глаз, сторона, дом, путь.'
s = s.replace('а', '')
s = s.replace('у', '')
s = s.replace('о', '')
s = s.replace('ы', '')
s = s.replace('и', '')
s = s.replace('э', '')
s = s.replace('я', '')
s = s.replace('ю', '')
s = s.replace('ё', '')
s = s.replace('е', '')
s = s[:-1]
x = s.split()[-1]
s = s.replace(x, '').replace(', ,', ',')
print(s)

Мне выводит:

ндл, члвк, жнщн, кнг, глз, стрн, дм,

Я хочу чтобы вывело:

ндл, члвк, жнщн, кнг, глз, стрн, дм.

Укажите пожалуйста на мою ошибку и что я делаю не так?


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

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

Ну раз вы не извлекаете никакого опыта из предыдущих ответов...

Вот конкретно как делается ваш текущий

s = 'неделя, человек, путь, женщина, книга, путь, глаз, сторона, дом, путь.'

words = ''.join(letter for letter in s if letter not in 'аеёиоуыэюя')[:-1].split(", ")

s = ', '.join(word for word in words if word != words[-1]) + '.'

print(s)
  1. из строки получить список букв без гласных

     arr = [letter for letter in s if letter not in 'аеёиоуыэюя']
    

т.е. пройти по всем буквам строки и в список добавить только те, которые не входят в список гласных

  1. собрать список в строку через пустой разделитель

     string = ''.join(arr)
    
  2. отрезать у строки последний символ (точку)

     string = string[:-1]
    

т.е. сделать срез строки от 0 символа до предпоследнего (-1 от конца)

  1. разбить строку на список слов через разделитель ,

     words = string.split(', ')
    
  2. удалить из списка все элементы равные последнему элементу (последнему слову)

последний элемент - words[-1]

удаление элементов через сбор нового списка в который такие элементы не входят

    new_words = [word for word in words if word != words[-1]]

или через фильтрацию с помощью функции filter

    new_words = filter(lambda word: word != words[-1], words)
  1. собрать список в строку через разделитель ,

     string = ', '.join(new_words)
    
  2. добавить точку

     string = string + '.'
    

P.S.

касательно шага 5) - через фильтрацию:

s = ', '.join(filter(lambda word: word != words[-1], words)) + '.'
→ Ссылка
Автор решения: AlTheOne
from collections import Counter


def main():
    
    # Указываем ПОСЛЕДОВАТЕЛЬНОСТЬ символов одной стройкой...
    replace_chars = 'ауоыиэяюёе'
    target_string = 'неделя, человек, путь, женщина, книга, путь, глаз, сторона, дом, путь.'
    
    # Вычисляем количество каждого символа...
    counter = Counter(target_string)

    for replace_char in replace_chars:

        # Извлекаем количество символов `replace_char` в строке...
        count = counter.get(replace_char)
        if count is not None:
            
            # Если символ есть в строке, то убираем каждый...
            for i in range(count):
                target_string = target_string.replace(replace_char, '')

    print(target_string)


if __name__ == '__main__':
    main()

→ Ссылка
Автор решения: I.M
def main():
    s = 'неделя, человек, путь, женщина, книга, путь, глаз, сторона, дом, путь.'
    s = s.replace('а', '')
    s = s.replace('у', '')
    s = s.replace('о', '')
    s = s.replace('ы', '')
    s = s.replace('и', '')
    s = s.replace('э', '')
    s = s.replace('я', '')
    s = s.replace('ю', '')
    s = s.replace('ё', '')
    s = s.replace('е', '')
    s.rstrip(',')
    s = s[:-1]
    x = s.split()[-1]
    #s = s.replace(x, '').replace(', ,', ',')
    print(s.rstrip(','),'.',sep='')# Такой формат подойдет?
main()
→ Ссылка
Автор решения: P1CA5S0
s = 'неделя, человек, путь, женщина, книга, путь, глаз, сторона, дом, путь.'
s = s.replace('а', '')
s = s.replace('у', '')
s = s.replace('о', '')
s = s.replace('ы', '')
s = s.replace('и', '')
s = s.replace('э', '')
s = s.replace('я', '')
s = s.replace('ю', '')
s = s.replace('ё', '')
s = s.replace('е', '')
s = s[:-1]
x = s.split()[-1]
s = s.replace(x, '').replace(', ,', ',')
s = s[:-2]
print(s + '.')
→ Ссылка