Python:字符串替换索引

9

我的意思是,我想用另一个字符串替换str[9:11]。 如果我使用str.replace(str[9:11], "###"),它不起作用,因为序列[9:11]可能出现多次。 如果str是"cdabcjkewabcef",我会得到"cd###jkew###ef",但我只想替换第二个。


1
使用 'string.replace' 会将给定文本的 每个 出现都转换为您输入的文本。但您并不想这样做,您只想根据其位置(索引)而不是其内容替换文本。 - Luke
6个回答

17

你可以做

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

对于大字符串来说,这应该比像 snew=s[:9]+"###"+s[12:] 这样的连接方式更快。


3
您可以通过以下方式实现此目标:
yourString = "Hello"
yourIndexToReplace = 1 #e letter
newLetter = 'x'
yourStringNew="".join((yourString[:yourIndexToReplace],newLetter,yourString[yourIndexToReplace+1:]))

2
您可以使用 join() 函数来处理子字符串。
s = 'cdabcjkewabcef'
sequence = '###'
indicies = (9,11)
print sequence.join([s[:indicies[0]-1], s[indicies[1]:]])
>>> 'cdabcjke###cef'

1
给定 txt 和 s - 你想要替换的字符串:
txt.replace(s, "***", 1).replace(s, "###").replace("***", s)

另一种方式:

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

1
str = "cdabcjkewabcef"
print((str[::-1].replace('cba','###',1))[::-1])

1
如果您能解释所提供的代码如何回答问题,那么这将是一个更好的答案。 - pppery

0
这是一个示例代码:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接