Dit komt terug:
'str' object does not support item assignment
Waarom? En hoe kan ik dit laten werken?
Antwoord 1, autoriteit 100%
In Python zijn strings niet veranderlijk, wat betekent dat ze niet kunnen worden gewijzigd. U kunt echter de hele variabele vervangen door de nieuwe versie van de tekenreeks.
Voorbeeld:
text = ' ' + text[1:] # replaces first character with space
Antwoord 2, autoriteit 67%
Snaren zijn onveranderlijk. Door te proberen:
text[0] = text[0].replace(letter," ")
u probeert toegang te krijgen tot de string en deze te wijzigen, wat niet is toegestaan vanwege de onveranderlijkheid van de string. In plaats daarvan kun je een for
-lus en wat slicen gebruiken:
for i in range(0, len(y)):
if y[i] == ",":
print y[i+1:len(y)]
break
U kunt de tekenreeks wijzigen waaraan een variabele is toegewezen (tweede stuk code) in plaats van de tekenreeks zelf (uw stuk code).
Antwoord 3
Ervan uitgaande dat de parameter text
een tekenreeks is, heeft de regel for letter in text[1]:
niet veel zin voor mij aangezien text[1]
is een enkel teken. Wat heeft het voor zin om een string van één letter te herhalen?
Als text
echter een lijst met tekenreeksenis, genereert uw functie geen uitzonderingen, maar retourneert deze eenvoudig de tekenreeks die het resultaat is van vervanging in de eerste tekenreeks (text[0]
) alle letters van de tweede string (text[1]
) door een spatie (" "
).
De volgende voorbeelden laten zien hoe remove_char
werkt wanneer het argument een lijst met snaren is:
In [462]: remove_char(['spam', 'parrot', 'eggs'])
Out[462]: 's m'
In [463]: remove_char(['bar', 'baz', 'foo'])
Out[463]: ' r'
In [464]: remove_char(['CASE', 'sensitive'])
Out[464]: 'CASE'
Misschien is dit niet het beoogde gedrag …