Я хочу поменять каждую пару символов в строке. '2143' становится '1234', 'badcfe' становится 'abcdef'.
'2143'
'1234'
'badcfe'
'abcdef'
Как я могу сделать это в Python?
>>> import ctypes >>> s = 'abcdef' >>> mutable = ctypes.create_string_buffer(s) >>> for i in range(0,len(s),2): >>> mutable[i], mutable[i+1] = mutable[i+1], mutable[i] >>> s = mutable.value >>> print s badcfe
Еще один способ:
>>> s='123456' >>> ''.join([''.join(el) for el in zip(s[1::2], s[0::2])]) '214365'
re.sub(r'(.)(.)',r"\2\1",'abcdef1234')
Однако, это немного медленно.
def swap(s): i=iter(s) while True: a,b=next(i),next(i) yield b yield a ''.join(swap("abcdef1234"))
Вроде так:
>>> s = "2143658709" >>> ''.join([s[i+1] + s[i] for i in range(0, len(s), 2)]) '1234567890' >>> s = "badcfe" >>> ''.join([s[i+1] + s[i] for i in range(0, len(s), 2)]) 'abcdef'
Хотите отсортировать цифры?Или вы меняете нечетные / четные индексированные цифры?Ваш пример совершенно неясен.
Сортировка:
s = '2143' p=list(s) p.sort() s = "".join(p)
s теперь «1234».Хитрость в том, что список (строка) разбивает его на символы.