Функция замены Python - PullRequest
       4

Функция замены Python

2 голосов
/ 08 февраля 2012

Я хочу использовать функцию замены, однако я хочу заменить только один символ, а не все экземпляры этого символа.

Например: -

>>> test = "10010"
>>> test = test.replace(test[2],"1")
>>> print test
>>> '11111' #The desired output is '10110'

Есть ли способ, которым я могу это сделать?

Ответы [ 5 ]

4 голосов
/ 08 февраля 2012

Нет встроенного решения. Но вот простая функция, которая делает это:

>>> def replace_one_char(s, i, c):
...     return s[:i] + c + s[i + 1:]
... 
>>> replace_one_char('foo', 1, 'a')
'fao'

Также рассмотрим решение Ignacio bytearray .

4 голосов
/ 08 февраля 2012

Нет.str.replace() заменяет все экземпляры этого персонажа.Используйте bytearray вместо.

>>> test = bytearray('10010')
>>> test[2] = '1'
>>> str(test)
'10110'
1 голос
/ 08 февраля 2012

Строки в python, к сожалению, неизменны, поэтому для этого вам придется работать с одним из нескольких обходных путей.

Упомянутый метод байтового массива будет работать.

Вы можететакже работайте со строкой в ​​виде списка:

    s = list("10010")
    s[2] = '1'
    test = "".join(s)

Разделение - это еще один вариант:

    s = '10010'
    s = s[:2] + '1' + s[3:]

Наконец, есть string.replace, о котором упоминали несколько человек.Хотя вы можете указать количество экземпляров подстроки для замены, вы не можете заменить ее произвольной подстрокой, поэтому она не будет работать для ваших целей.

1 голос
/ 08 февраля 2012

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

Заменить на строки работает следующим образом:

mystr = "mystr"
mystr.replace('t','i',1)
'mysir'

print mystr
mystr

может быть тем, что вам нужно, может не быть.

0 голосов
/ 24 апреля 2017
test = "10010"
test = test.replace(test[2],"1")
print test
'11111' #The desired output is '10110'

вы могли бы что-то вроде этого

test2= test[0:1]+"1"+test[3:4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...