Убрать гласные буквы в строке и слова которые одинаковые с последним словом
У меня код уже удаляет гласные и теперь нужно только удалить слова путь.
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('е', '')
x = s.split()[-1]
s = s.replace(x, "")
print(s)
У меня код уже удаляет гласные и теперь нужно только удалить слова путь. Щас х = "путь." и я не могу удалить другие повторяющиеся слова, потому что они "путь,". Как мне удалить все повторяющиеся слова?
Ответы (3 шт):
убрать гласные и удалить последнюю букву можно и так:
s = 'неделя, человек, путь, женщина, книга, путь, глаз, сторона, дом, путь.'
s = ''.join(letter for letter in s if letter not in 'аеёиоуыэюя')[:-1]
print(s)
гораздо короче
а убрать слово потом можно и так:
words = s.split(", ")
s = ', '.join(word for word in words if word != words[-1])
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 + '.')
import string
VOWELS = "ауоыиэяюёе"
s = 'неделя, человек, путь, женщина, книга, путь, глаз, сторона, дом, путь.'
trans_table = str.maketrans("", "", VOWELS + string.punctuation)
without_wowels_and_punct = s.translate(trans_table)
wordlist = without_wowels_and_punct.split()
last_word = wordlist[-1]
wordlist = [word for word in wordlist if word != last_word]
result = ", ".join(wordlist) + "."
Объяснение:
Удаление всех желаемых символов возможно сделать сразу применением метода
.translate()на строкуs.Для того приготовим нужную таблицу (словарь)
trans_tableвсех символов, которые мы хотим удалить - в том числе и все символы пунктуации.Такой словарь, чтобы его возможно было задать как аргумент метода
.translate(), нужен иметь как ключи не буквы, а их Юникод ординальные числа.Для создания такого словаря — со всеми значениями
None(т.е. «удалить») - применим метод.maketrans(). Первые 2 параметра нас не интересуют (что чем заменить), только 3-ий (что удалить):>>> trans_table = str.maketrans("", "", VOWELS + string.punctuation) {1072: None, # а 1091: None, # у 1086: None, # о 1099: None, # ы 1080: None, # и 1101: None, # э 1103: None, # я 1102: None, # ю 1105: None, # ё 1077: None, # е 33: None, # ! 34: None, # " 35: None, # # ... ... 124: None, # | 125: None, # } 126: None} # ~
После удаления всех ненужных символов из строки применением метода
.translate():>>>s.translate(trans_table) 'ндл члвк пть жнщн кнг пть глз стрн дм пть'создаем из него список слов:
>>> without_wowels_and_punct.split() ['ндл', 'члвк', 'пть', 'жнщн', 'кнг', 'пть', 'глз', 'стрн', 'дм', 'пть']выберем из него последнее:
last_word = wordlist[-1](оно уже без пунктуации)и использованием генератора списка удалим все его появления из этого списка:
wordlist = [word for word in wordlist if word != last_word]получая в переменной
wordlistсписок>>> wordlist ['ндл', 'члвк', 'жнщн', 'кнг', 'глз', 'стрн', 'дм']
Наконец из списка сделаем опять строку применением метода
.join()на строку", "(которой мы хотим отделить отдельные слова — элементы списка) и добавим заключительную точку (.):>>> ", ".join(wordlist) + "." 'ндл, члвк, жнщн, кнг, глз, стрн, дм.'