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