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?

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