Вот способ, используя метод translate
строки:
>>> a = "1x22x1x"
>>> a.translate({ord('1'):'2', ord('2'):'1'})
'2x11x2x'
>>>
>>> # Just to explain
>>> help(str.translate)
Help on method_descriptor:
translate(...)
S.translate(table) -> str
Return a copy of the string S, where all characters have been mapped
through the given translation table, which must be a mapping of
Unicode ordinals to Unicode ordinals, strings, or None.
Unmapped characters are left untouched. Characters mapped to None
are deleted.
>>>
Заметим, однако, что я написал это для Python 3.x. В 2.x, вам нужно будет сделать это:
>>> from string import maketrans
>>> a = "1x22x1x"
>>> a.translate(maketrans('12', '21'))
'2x11x2x'
>>>
Наконец, важно помнить, что метод translate
для перестановки символов с другими персонажами. Если вы хотите обменять подстроки, вы должны использовать метод replace
, как продемонстрировал Рохит Джайн.
Да, это почти прекрасно. Результат дал мне '@ temp_replacex11x @ temp_replacex'. Так что еще нужно что-то сделать. – Waldema
@Waldema. Вы уверены, что получили этот результат? Я получил [правильный результат] (http://ideone.com/IaGY13) –
Положительный, дважды проверенный ..: o Или я просто опечатываю? – Waldema