Как правильно реализовать удаление из строки определенных слов
Задача: Удалить из строки "sos" (или добавить в новую но без нее), при это буква "o" может повторяться по многу раз. Реализовал это так (цикл for):
sl = ''
#Цикл
if s == 1:
if line[i] == 'o':
continue
elif line[i-1] == 'o' and line[i] == 's':
continue
if line[i] == 's' and line[i+1] == 'o' and line[i+2] == 'o' or line[i] == 's' and line[i+1] == 'o' and line[i+2] == 's':
s = 1
else:
sl += line[i]
Как реализовать это по-другому? (Про то что работает не для всех проверок я знаю)
Ответы (2 шт):
Автор решения: w4sQ
→ Ссылка
Программа удаляет слово "sos" с любым количеством буквы "o"
text = "word soooooos help main python".split()
for word in text:
if word.startswith("s") and word.endswith("s"):
w = word[1:len(word)-1].replace("o", "")
if w == "":
text.remove(word)
text1 = " ".join(map(str, text))
print(text1)
Автор решения: Сергей
→ Ссылка
Можно так "в лоб" сделать (не особо изящно, но просто и без дополнительных модулей:-), так как для регулярных выражений модуль re понадобится. Большие буквы считаются допустимыми, т.е. SOS пройдет. Но доп.проверку встроить не сложно.
str_a='sosтест успешен soooooos'
sl = ''
s_buf=''
fl1 = False
for i in str_a:
# Первая 's'
if i == 's' and not fl1:
s_buf = i
fl1 = True
# 'o' после 's'
elif i == 'o' and fl1:
s_buf += i
# Последняя 's'
elif i == 's' and fl1:
s_buf = ''
fl1 = False
# Всё остальное
else:
sl = sl + s_buf + i
fl1 = False
print (sl)