El objeto ‘str’ no admite la asignación de elementos en Python

Me gustaría leer algunos caracteres de una cadena y ponerlos en otra cadena (como hacemos en C).

Así que mi código es como abajo

import string import re str = "Hello World" j = 0 srr = "" for i in str: srr[j] = i #'str' object does not support item assignment j = j + 1 print (srr) 

En C el código puede ser

 i = j = 0; while(str[i] != '\0') { srr[j++] = str [i++]; } 

¿Cómo puedo implementar lo mismo en Python?

Related of "El objeto ‘str’ no admite la asignación de elementos en Python"

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

Sin embargo, puedes hacer lo siguiente:

 for i in str: srr += i 

Las razones por las que esto funciona es que es un atajo para:

 for i in str: srr = srr + i 

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

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

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

Si de verdad quieres.

Las cuerdas de Python son inmutables, por lo que lo que intentas hacer en C será simplemente imposible en Python. Tendrás que crear una nueva cadena.

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

Luego usa un trozo de cuerda:

 >>> s1 = 'Hello world!!' >>> s2 = s1[6:12] >>> print s2 world! 

Como mencionó aix, las cadenas en Python son inmutables (no puedes cambiarlas in situ).

Lo que estás tratando de hacer se puede hacer de muchas maneras:

 # Copy the string foo = 'Hello' bar = foo # Create a new string by joining all characters of the old string new_string = ''.join(c for c in oldstring) # Slice and copy new_string = oldstring[:] 

Otro enfoque si desea intercambiar un personaje específico por otro personaje:

 def swap(input_string): if len(input_string) == 0: return input_string if input_string[0] == "x": return "y" + swap(input_string[1:]) else: return input_string[0] + swap(input_string[1:]) 

¿Qué hay de esta solución:

str = “Hola mundo” (como se indica en el problema) srr = str + “”

Hola, deberías probar el método de división de cadenas:

 i = "Hello world" output = i.split() j = 'is not enough' print 'The', output[1], j