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