Python: String replace index



То есть я хочу заменить str[9:11] на другую строку.
Если я сделаю str.replace(str[9:11], "###") , это не сработает, потому что последовательность [9: 11] может быть больше одного раза.
Если str-это "cdabcjkewabcef", я бы получил "cd###jkew###ef", но я хочу только заменить второе.

601   5  

5 ответов:

Вы можете сделать

s="cdabcjkewabcef"
snew="".join((s[:9],"###",s[12:]))

Который должен быть быстрее, чем соединение типа snew=s[:9]+"###"+s[12:] на больших строках

Учитывая txt и s-строку, которую вы хотите заменить:

txt.replace(s, "***", 1).replace(s, "###").replace("***", s)

Другой способ:

txt[::-1].replace(s[::-1], "###", 1)[::-1]

Вы можете использовать join() с подстроками.

s = 'cdabcjkewabcef'
sequence = '###'
indicies = (9,11)
print sequence.join([s[:indicies[0]-1], s[indicies[1]:]])
>>> 'cdabcjke###cef'

Вы можете достичь этого, сделав:

yourString = "Hello"
yourIndexToReplace = 1 #e letter
newLetter = 'x'
yourStringNew="".join((yourString[:yourIndexToReplace],newLetter,yourString[yourIndexToReplace+1:]))

Вот пример кода:

word = "astalavista"
index = 0
newword = ""
addon = "xyz"
while index < 8:
    newword = newword + word[index]
    index += 1
    ind = index

i = 0
while i < len(addon):
    newword = newword + addon[i]
    i += 1

while ind < len(word):
    newword = newword + word[ind]
    ind += 1

print newword

Comments

    Ничего не найдено.