Объект 'str' не поддерживает назначение элемента в Python

Я хотел бы прочитать некоторые символы из строки и поместить ее в другую строку (как в C).

Итак, мой код выглядит ниже

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)

В C код может быть

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

Как я могу реализовать то же самое в Python?

Ответ 1

В Python строки неизменяемы, поэтому вы не можете изменить их символы на месте.

Вы можете, однако, сделать следующее:

for i in str:
    srr += i

Причины этого: это ярлык для:

for i in str:
    srr = srr + i

Приведенная выше процедура создает новую строку с каждой итерацией и сохраняет ссылку на эту новую строку в srr.

Ответ 2

Другие ответы верны, но вы можете, конечно, сделать что-то вроде:

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

если вы действительно этого хотите.

Ответ 3

строки Python являются неизменными, поэтому то, что вы пытаетесь сделать на C, будет просто невозможно в python. Вам нужно будет создать новую строку.

Я хотел бы прочитать некоторые символы из строки и поместить ее в другая строка.

Затем используйте строковый фрагмент:

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

Ответ 4

Как упоминалось выше, строки в Python неизменяемы (вы не можете изменить их на месте).

То, что вы пытаетесь сделать, может быть сделано разными способами:

# 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[:]

Ответ 5

Как насчет этого решения:

str = "Hello World" (как указано в задаче) srr = str + ""

Ответ 6

Привет, вам следует попробовать метод разделения строк:

i = "Hello world"
output = i.split()

j = 'is not enough'

print 'The', output[1], j