Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2013 23:20:09

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Поменять местами слова в строке

Budulianin
заменяемое слово может быть частью другого слова
про это я не подумал, тогда через регулярку
import re
s = "foo one bar two2 baz two garb one2"
words = ("one", "two")
for idx, word in enumerate(words):
    s = re.sub(r'\b{}\b'.format(word), "{{{}}}".format(idx), s)
s = s.format(* reversed(words))
print(s)

Офлайн

#2 Окт. 9, 2013 12:43:51

GGnoob
Зарегистрирован: 2013-10-01
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Поменять местами слова в строке

Budulianin
Или у тебя всё чётко и просто, поэтому такого никогда не произойдёт ?
Ну да, я же говорю
GGnoob
Ну вообще у меня слова не повторяются, хотя представить такую ситуацию я могу.
py.user.next
Спасибо, то, что нужно. Только я не совсем понимаю запись
py.user.next
(repr(out))
Да и зачем вводить out, нельзя ли сразу написать так:
s = ''.join(lst)
print(s)

Офлайн

#3 Окт. 9, 2013 22:11:01

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

Поменять местами слова в строке

GGnoob
Да и зачем вводить out, нельзя ли сразу написать так:
это плохой стиль
здесь мало кода, поэтому ты не замечаешь разницы, но когда кода больше, то повторное использование одних и тех же имён образует путаницу:
когда у тебя есть out, ты всегда знаешь, что у тебя есть и s, и ты всегда знаешь, что в них;
но когда ты перекрываешь s, ты уже не помнишь, перекрывал ли ты её до этого или нет (потому что у тебя это обычная практика), поэтому ты не знаешь, что в ней в каждой строке
ты смотришь на строку и думаешь "а что в этой переменной s ? дай-ка я прочитаю десяток строк выше, чтобы это узнать, вдруг я её там где-то перекрыл"

во-во, а потом без отладчика не могут в своём же коде разобраться, потому что каждый раз по тысяче строк надо перечитывать, а времени на это нет

GGnoob
Только я не совсем понимаю запись
repr() показывает строку в недвусмысленном виде
то есть, если её просто вывести, то ты не сможешь сказать, есть ли в конце строки два пробела, потому что их не видно в любом случае



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version