replacestring中的字符的实例

这个简单的代码,只是试图用冒号代替分号(在我指定的位置)不起作用:

for i in range(0,len(line)): if (line[i]==";" and i in rightindexarray): line[i]=":" 

它给出了错误

 line[i]=":" TypeError: 'str' object does not support item assignment 

我怎样才能解决这个问题,以冒号代替分号? 使用replace不起作用,因为该函数没有索引 – 可能有一些分号,我不想取代。

在string中,我可能有任意数量的分号,例如“Hei der!;你好!”;“

我知道哪些我想要replace(我有他们的索引在string中)。 使用replace不起作用,因为我不能使用它的索引。

Python中的string是不可变的,所以你不能把它们当作一个列表来分配给索引。

使用.replace()来代替:

 line = line.replace(';', ':') 

如果您只需要replace某些分号,则需要更具体。 您可以使用切片来隔离要replace的string部分:

 line = line[:10].replace(';', ':') + line[10:] 

这将replacestring前10个字符中的所有分号。

如果你不想使用.replace() ,你可以做下面的代码,用给定的索引中的各个charreplace任何char。

 word = 'python' index = 4 char = 'i' word = word[:index] + char + word[index + 1:] print word o/p: pythin 

把string转换成一个列表; 那么你可以单独更改字符。 然后你可以把它放回去。join:

 s = 'a;b;c;d' slist = list(s) for i, c in enumerate(slist): if slist[i] == ';' and 0 <= i <= 3: # only replaces semicolons in the first part of the text slist[i] = ':' s = ''.join(slist) print s # prints a:b:c;d 

如果你想replace一个分号:

 for i in range(0,len(line)): if (line[i]==";"): line = line[:i] + ":" + line[i+1:] 

没有testing过它。

这应该包括一个稍微更一般的情况,但你应该能够为你的目的进行定制

 def selectiveReplace(myStr): answer = [] for index,char in enumerate(myStr): if char == ';': if index%2 == 1: # replace ';' in even indices with ":" answer.append(":") else: answer.append("!") # replace ';' in odd indices with "!" else: answer.append(char) return ''.join(answer) 

希望这可以帮助

如果用variables'n'指定的索引值进行replace,请尝试以下操作:

 def missing_char(str, n): str=str.replace(str[n],":") return str