Форум сайта python.su
0
Друзья, здравствуйте
Подскажите пожалуйста как элегантно заменить слова из списка в строке?
Есть варианты вхождений
dd=['word1','word2','word3'] string = 'word1word word word2 word3word fdsghg'
Офлайн
49
Что на что менять? dd - это “что меняем” или это “на что меняем”?
Офлайн
1
list = string.split() [list.__setitem__(list.index(i), j) for i in list for j in dd if j in i]; " ".join(list)
Офлайн
26
theproshin а что должно получиться? у меня вышло
# -*- coding: utf-8 -*- dd=['word1','word2','word3'] string = 'word1word word word2 word3word fdsghg' list = string.split() print [list.__setitem__(list.index(i), j) for i in list for j in dd if j in i]; " ".join(list)
[None, None, None]
Отредактировано ajib6ept (Янв. 6, 2015 22:27:53)
Офлайн
26
Dobrodel
Друзья, здравствуйтеПодскажите пожалуйста как элегантно заменить слова из списка в строке?Есть варианты вхождений
# -*- coding: utf-8 -*- import re dd=['word1','word2','word3'] string = 'word1word word word2 word3word fdsghg' print re.sub('|'.join(dd), '', string)
Офлайн
1
ajib6ept, генератор нужен лишь изменить объект, его вывод нам неважен.
# -*- coding: utf-8 -*- dd=['word1','word2','word3'] string = 'word1word word word2 word3word fdsghg' list = string.split() [list.__setitem__(list.index(i), j) for i in list for j in dd if j in i] print " ".join(list)
Офлайн
26
theproshin
ajib6ept, генератор нужен лишь изменить объект, его вывод нам неважен
Офлайн
0
Друзья, простите, совсем забыл про саму замену. Необходимо все вхождения из dd удалить из строки string, т.е. заменить на пустоту.
Т.е. результат должен быть = ‘word word word fdsghg’
Регулярные выражения вычисляются очень долго, поэтому их желательно не использовать. Наилучший вариант будет это через map или/и lambda или что то в этом роде.
PS
Было бы здорово сделать примерно так
dd = ['word1', 'word2', 'word3'] string = 'word1word word word2 word3word fdsghg' list = string.split() [i.replace( j, '' ) for i in list for j in dd if j in i]
Отредактировано Dobrodel (Янв. 7, 2015 06:32:41)
Офлайн
103
dd=['word1','word2','word3'] string = 'word1word word word2 word3word fdsghg' for i in dd: string = string.replace(i, '') print string
Офлайн
0
Благодарю, то что надо))
Офлайн