Как убрать все слова в строке кроме 3 последних?
Мне надо действие, которое будет убирать все слова в строке, кроме 3 последних. (Число строк которые надо убрать не определённые)
Ответы (4 шт):
Автор решения: Victor VosMottor thanks Monica
→ Ссылка
def f(string, number):
return ' '.join(string.split(' ')[-number:])
Автор решения: Nixs Code
→ Ссылка
str_s = str.split(" ")
array = []
array.append(str_s[-1])
array.append(str_s[-2])
array.append(str_s[-3])
str_ = array[0] + ' ' + array[1] + ' ' + array[2]
Автор решения: Mamba
→ Ссылка
inp1 = 'Привет, в этой строке есть слова, я хочу получить 3 последних'
inp2 = 'Мало слов'
'''
input:
inp<str> - строка на входе
count<int> - Количество последних строк
return:
str - строка с тремя последними словами
'''
def a(inp, count):
# Для начала разбиваем строку по пробельному символу
buff = inp.split(" ")
# Выполним выборку слов только если слов в строке больше чем нам надо
# В противном случае буфер не изменится и мы вернем столько слов, сколько есть
if len(buff) > count:
# Получм 3 последних элемента
# buff[-3:] говорит о том, что мы получаем 3 элемента с конца
buff = buff[-count:]
# Оьъеденим полученные элементы массива
# Если у строки вызвать метод join он возьмет нашу строку как сепаратор
buff = ' '.join(buff)
return buff
print(a(inp1, 3))
print(a(inp2, 3))
Автор решения: vadim vaduxa
→ Ссылка
В задаче не сказано, что слова обязательно должны быть разделены пробелом, а следовательно они могут быть разделены табуляцией
\tлибо переносом строки\n, в том числе в конце строкиВ задаче сказано "убрать все слова", следовательно разделители между словами должны остаться неизменными
Отсюда выходит что приведенные ответы "не совсем корректны"
Возможно мой вариант не самый оптимальный, но он отражает смысл задачи
string_ = '''
word1 word2 word3
word4\tword5
'''
def qwe(string_, sep = ' \n\t'):
count=0
for s in reversed(string_.rstrip()):
if count == 3: break
elif s in sep: count += 1
yield s
last3 = ''.join(reversed(list(qwe(string_)))).lstrip()
print(last3)
out:
word3
word4 word5
В выводе сохранены изначальные разделители слов, такие как \n и \t