2010-10-05 9 views
14

¿Cómo modifico un solo carácter en una cadena, en Python? Algo como:¿Cómo modifico un solo carácter en una cadena, en Python?

a = "hello" 
a[2] = "m" 

'str' objeto no admite la asignación de elementos.

+0

posible duplicado de [¿Cambiar un carácter en una cadena en Python?] (Http://stackoverflow.com/questions/1228299/change-one-character-in-a-string-in-python) – Wolf

Respuesta

12

Las cadenas son inmutables en Python. Se puede utilizar una lista de caracteres en su lugar:

a = list("hello") 

Cuando desea mostrar el resultado usar ''.join(a):

a[2] = 'm' 
print ''.join(a) 
8

Pruebe la construcción de una lista de ella. Cuando pasas un iterable en un constructor de lista, será turn it into a list (esto es un poco de simplificación, pero por lo general funciona).

a = list("hello") 
a[2] = m 

A continuación, puede unirse a una copia de seguridad con ''.join(a).

+1

Excelente respuesta. – JoshD

10

En python, la cadena es inmutable. Si desea cambiar un carácter único, que tendrá que utilizar slicing:

a = "hello" 
a = a[:2] + "m" + a[3:] 
+1

Supongo que esto costaría más memoria si es una cadena realmente grande ya que tienes que unir otras tres cuerdas para formar una nueva cuerda, ¿no? – Shane

+0

¡Oh, sí! Si necesita hacer un montón de este tipo de manipulaciones, es mejor usar una lista de caracteres. A menos que ya tenga una cadena y quiera cambiar un carácter. Incluso entonces, probablemente sea más rápido crear y modificar una lista. – JoshD

+0

@Shane: Consulte la respuesta de @ detly a continuación para obtener un ejemplo simple. –

3

Es porque las cadenas en Python son inmutables.

Cuestiones relacionadas