Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2015 10:46:24

Dobrodel
Зарегистрирован: 2014-09-24
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Как элегантно заменить слова из списка в строке?

theproshin
# -*- 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)
Чуть подправил - работает:

# -*- coding: utf-8 -*-
dd=['word1','word2','word3']
string = 'word1word word word2 word3word fdsghg'
list = string.split()
[list.__setitem__( list.index( i ), i.replace( j, '' ) ) for i in list for j in dd if j in i]
print  " ".join(list)
word word  word fdsghg
Благодарю!

PS
Правда это вариант в 2.5 раза выполняется дольше чем предыдущий.(

Отредактировано Dobrodel (Янв. 7, 2015 11:47:07)

Офлайн

#2 Янв. 7, 2015 12:22:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как элегантно заменить слова из списка в строке?

Лучше типа такого. Он яснее.

Dobrodel
Чуть подправил - работает:
При разделении строки через split() группы пробельных символов превращаются в один пробел. Да и вообще множество ошибок там - пример того, как писать не стоит.



Отредактировано py.user.next (Янв. 7, 2015 12:25:57)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version