Как заменить только 6-й элемент строки

Есть строка:

s2 = "xxxxxxxxxxxxxxx"
ss = s2.replace(s2[6], "X")
print(ss)

И я хочу заменить на «Х» только 6-й элемент строки, а мне заменяет полностью строку на «ХХХХХХХХХХХХХХ»

Что делать?


Ответы (3 шт):

Автор решения: CrazyElf

Ну например можно разобрать строку в список по отдельным буквам и делать с конкретными позициями что хотите:

s2 = "xxxxxxxxxxxxxxx"
l2 = list(s2)
l2[6] = "X"
ss = ''.join(l2)
print(ss)
# xxxxxxXxxxxxxxx
→ Ссылка
Автор решения: Эникейщик

Ваш код делает совсем не то, что вам кажется он должен делать. Разберем предложение s2.replace(s2[6], "X") по составу:

s2 равно "xxxxxxxxxxxxxxx", s2[6] равно "x". Подставим в исходную строчку, получим

"xxxxxxxxxxxxxxx".replace("x", "X") - т.е. просим заменить в строке "xxxxxxxxxxxxxxx" каждый символ "x" на "X". Что и происходит.

→ Ссылка
Автор решения: SergFSM

можно с помощью регулярки сделать замену:

from re import sub

s2 = "xxxxxxxxxxxxxxx"

sub(r'^(.{5})(.)',r'\1X',s2)  # 'xxxxxXxxxxxxxxx'
→ Ссылка