El objeto 'str' no admite la asignación de elementos [duplicado]

Resuelto Rasmi Ranjan Nayak asked hace 12 años • 10 respuestas

Me gustaría leer algunos caracteres de una cadena s1y ponerlos en otra cadena s2.

Sin embargo, asignar a s2[j]da un error:

s2[j] = s1[i]

# TypeError: 'str' object does not support item assignment

En C, esto funciona:

int i = j = 0;
while (s1[i] != '\0')
    s2[j++] = s1[i++];

Mi intento en Python:

s1 = "Hello World"
s2 = ""
j = 0

for i in range(len(s1)):
    s2[j] = s1[i]
    j = j + 1
Rasmi Ranjan Nayak avatar May 17 '12 14:05 Rasmi Ranjan Nayak
Aceptado

Las otras respuestas son correctas, pero, por supuesto, puedes hacer algo como:

>>> str1 = "mystring"
>>> list1 = list(str1)
>>> list1[5] = 'u'
>>> str1 = ''.join(list1)
>>> print(str1)
mystrung
>>> type(str1)
<type 'str'>

Si de verdad quieres.

Crowman avatar Aug 01 '2013 23:08 Crowman

En Python, las cadenas son inmutables, por lo que no puedes cambiar sus caracteres en el lugar.

Sin embargo, puedes hacer lo siguiente:

for c in s1:
    s2 += c

La razón por la que esto funciona es que es un atajo para:

for c in s1:
    s2 = s2 + c

Lo anterior crea una nueva cadena con cada iteración y almacena la referencia a esa nueva cadena en formato s2.

NPE avatar May 17 '2012 07:05 NPE

asignar a s2[j]da un error

Las cadenas son inmutables, por lo que lo que has hecho en C no será posible en Python. En su lugar, tendrás que crear una nueva cadena.

Me gustaría leer algunos caracteres de una cadena y ponerlos en otra cadena.

Utilice una rebanada :

>>> s1 = 'Hello world!!'
>>> s2 = s1[6:12]
>>> print(s2)
world!
wim avatar May 17 '2012 07:05 wim