Какой самый простой способ поменять символ в строке с Python? - PullRequest
16 голосов
/ 05 января 2011

Я хочу поменять каждую пару символов в строке. '2143' становится '1234', 'badcfe' становится 'abcdef'.

Как я могу сделать это в Python?

Ответы [ 15 ]

0 голосов
/ 03 октября 2014
>>> 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
0 голосов
/ 19 мая 2013

Еще один способ:

>>> s='123456'
>>> ''.join([''.join(el) for el in zip(s[1::2], s[0::2])])
'214365'
0 голосов
/ 05 января 2011
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"))
0 голосов
/ 05 января 2011

Вроде так:

>>> 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'
0 голосов
/ 05 января 2011

Хотите отсортировать цифры?Или вы меняете нечетные / четные индексированные цифры?Ваш пример совершенно неясен.

Сортировка:

s = '2143'
p=list(s)
p.sort()
s = "".join(p)

s теперь «1234».Хитрость в том, что список (строка) разбивает его на символы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...