Найти - Пользователи
Полная версия: Поменять местами слова в строке
Начало » Python для новичков » Поменять местами слова в строке
1 2
bismigalis
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)
GGnoob
Budulianin
Или у тебя всё чётко и просто, поэтому такого никогда не произойдёт ?
Ну да, я же говорю
GGnoob
Ну вообще у меня слова не повторяются, хотя представить такую ситуацию я могу.
py.user.next
Спасибо, то, что нужно. Только я не совсем понимаю запись
py.user.next
(repr(out))
Да и зачем вводить out, нельзя ли сразу написать так:
s = ''.join(lst)
print(s)
py.user.next
GGnoob
Да и зачем вводить out, нельзя ли сразу написать так:
это плохой стиль
здесь мало кода, поэтому ты не замечаешь разницы, но когда кода больше, то повторное использование одних и тех же имён образует путаницу:
когда у тебя есть out, ты всегда знаешь, что у тебя есть и s, и ты всегда знаешь, что в них;
но когда ты перекрываешь s, ты уже не помнишь, перекрывал ли ты её до этого или нет (потому что у тебя это обычная практика), поэтому ты не знаешь, что в ней в каждой строке
ты смотришь на строку и думаешь "а что в этой переменной s ? дай-ка я прочитаю десяток строк выше, чтобы это узнать, вдруг я её там где-то перекрыл"

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

GGnoob
Только я не совсем понимаю запись
repr() показывает строку в недвусмысленном виде
то есть, если её просто вывести, то ты не сможешь сказать, есть ли в конце строки два пробела, потому что их не видно в любом случае
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB