El objeto 'str' no admite la asignación de elementos [duplicado]
Me gustaría leer algunos caracteres de una cadena s1
y 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
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.
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
.
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!