Ваш первый код не работает, потому что он только назначает новое значение локальной переменной word
, без: изменения строки в списке. Ваш второй код работает (как вы заметили), но неэффективен, так как вы должны найти index
каждого слова, которое вы хотите удалить. Вместо этого вы можете использовать enumerate
для итерации слов и индексов одновременно, а также использовать lstrip
вместо разбиения строки.
text_l = text.split()
for i, word in enumerate(text_l):
if word.startswith(','):
text_l[i] = word.lstrip(",")
text = ' '.join(text_l)
Кроме того, при использовании lstrip
if
больше не является необходимым, и мы можем сжать все это до выражения генератора одной строки в ' '.join(...)
:
text = ' '.join(word.lstrip(",") for word in text.split())