Reemplazo de instancias de un carácter en una cadena
Este código simple que simplemente intenta reemplazar el punto y coma (en las posiciones especificadas por i) por dos puntos no funciona:
for i in range(0,len(line)):
if (line[i]==";" and i in rightindexarray):
line[i]=":"
da el error
line[i]=":"
TypeError: 'str' object does not support item assignment
¿Cómo puedo solucionar este problema para reemplazar el punto y coma por dos puntos? El uso de reemplazar no funciona ya que esa función no requiere índice; es posible que haya algunos puntos y comas que no desee reemplazar.
Ejemplo
En la cadena podría tener cualquier número de puntos y coma, por ejemplo, "Hei der!; Hola;!;"
Sé cuáles quiero reemplazar (tengo su índice en la cadena). Usar reemplazar no funciona porque no puedo usar un índice con él.
Las cadenas en Python son inmutables, por lo que no puede tratarlas como una lista y asignarlas a índices.
Utilice .replace()
en su lugar:
line = line.replace(';', ':')
Si necesita reemplazar solo ciertos puntos y coma, deberá ser más específico. Podrías usar el corte para aislar la sección de la cadena a reemplazar:
line = line[:10].replace(';', ':') + line[10:]
Eso reemplazará todos los puntos y coma en los primeros 10 caracteres de la cadena.
Puede hacer lo siguiente para reemplazar cualquier carácter con un carácter respectivo en un índice determinado, si no desea utilizar.replace()
word = 'python'
index = 4
char = 'i'
word = word[:index] + char + word[index + 1:]
print word
o/p: pythin
Convierta la cadena en una lista; luego puedes cambiar los personajes individualmente. Luego puedes volver a armarlo con .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
Si desea reemplazar un solo punto y coma:
for i in range(0,len(line)):
if (line[i]==";"):
line = line[:i] + ":" + line[i+1:]
Aunque no lo he probado.
No se puede simplemente asignar valor a un carácter en la cadena. Utilice este método para reemplazar el valor de un carácter en particular:
name = "India"
result=name .replace("d",'*')
Salida: In*ia
Además, si desea reemplazar, diga * para todas las apariciones del primer carácter excepto el primer carácter, por ejemplo. cadena = balbuceo salida = batalla
Código:
name = "babble"
front= name [0:1]
fromSecondCharacter = name [1:]
back=fromSecondCharacter.replace(front,'*')
return front+back