Объект '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?

 Joel Cornett17 мая 2012 г., 09:23
Кстати, не называйте ваши переменные после встроенных Python. Если вы используетеstr в качестве переменной здесь вы не сможете выполнять преобразования строк сstr(var_that_is_not_a_string) или сравнения типа, такие какtype(var_with_unknown_type) == str.

Ответы на вопрос(7)

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

str = & quot; Hello World & quot; (как указано в проблеме) srr = str + & quot;

Другой подход, если вы хотите поменять определенный символ на другого:

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:])

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

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

если ты действительно хочешь.

Решение Вопроса

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

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

for i in str:
    srr += i

Причины, по которым это работает, состоят в том, что это сокращение для:

for i in str:
    srr = srr + i

Вышеcreates a new string с каждой итерацией, и сохраняет ссылку на эту новую строку вsrr.

 17 мая 2012 г., 09:29
@RasmiRanjanNayak:print " ".join(reversed("Hello world".split())).capitalize()
 Rasmi Ranjan Nayak17 мая 2012 г., 09:21
Тогда, если бы я хотел прочитать символы из строки и скопировать их куда-нибудь, то как я могу это сделать?
 17 мая 2012 г., 09:31
@aix: Это было буквально в течение нескольких секунд друг от друга. : D
 17 мая 2012 г., 09:24
@RasmiRanjanNayak: Это зависит от того, что вам нужно делать с этими персонажами. В своем ответе я показал, как их можно добавить к другой строке.
 Rasmi Ranjan Nayak17 мая 2012 г., 09:26
Я хотел бы написать программу "Hello world" на "Мир Привет". Таким образом, мой код должен искать пробел («»). Так что я искал помощи

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

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

j = 'is not enough'

print 'The', output[1], j

Как уже упоминалось, строки в 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[:]

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

I would like to read some characters from a string and put it into other string.

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

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

Ваш ответ на вопрос