‘str’-object ondersteunt geen itemtoewijzing (Python)

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 texteen 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 textechter 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_charwerkt 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 …

Other episodes