‘str’-object ondersteunt geen itemtoewijzing in Python

Ik zou graag enkele karakters uit een string willen lezen en deze in een andere string willen plaatsen (zoals we doen in C).

Dus mijn code is zoals hieronder

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)

In C kan de code zijn

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

Hoe kan ik hetzelfde in Python implementeren?


Antwoord 1, autoriteit 100%

In Python zijn strings onveranderlijk, dus je kunt hun karakters niet ter plekke veranderen.

U kunt echter het volgende doen:

for i in str:
    srr += i

De redenen waarom dit werkt, is dat het een snelkoppeling is voor:

for i in str:
    srr = srr + i

Het bovenstaande maakt bij elke iteratie een nieuwe tekenreeks en slaat de verwijzing naar die nieuwe tekenreeks op in srr.


Antwoord 2, autoriteit 117%

De andere antwoorden zijn correct, maar je kunt natuurlijk zoiets doen als:

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

als je dat echt wilt.


Antwoord 3, autoriteit 17%

Python-strings zijn onveranderlijk, dus wat u probeert te doen in C zal gewoon onmogelijk zijn in python. Je zult een nieuwe string moeten maken.

Ik zou graag enkele karakters uit een string willen lezen en deze in
andere tekenreeks.

Gebruik dan een string slice:

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

Antwoord 4, autoriteit 5%

Zoals aix al zei – strings in Python zijn onveranderlijk (je kunt ze niet ter plekke veranderen).

Wat u probeert te doen, kan op veel manieren worden gedaan:

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

Antwoord 5

Een andere benadering als je een specifiek teken wilt ruilen voor een ander teken:

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

Antwoord 6

Wat dacht je van deze oplossing:

str=”Hallo wereld” (zoals vermeld in het probleem)
srr = str+ “”


Antwoord 7

Hallo, je zou de methode voor het splitsen van strings moeten proberen:

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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

10 + 16 =

Other episodes