AttributeError: 'str' object has no attribute 'append'


Question

>>> myList[1]
'from form'
>>> myList[1].append(s)

Traceback (most recent call last):
  File "<pyshell#144>", line 1, in <module>
    myList[1].append(s)
AttributeError: 'str' object has no attribute 'append'
>>>

Why myList[1] is considered a 'str' object? mList[1] returns the first item in the list 'from form' but I cannot append to item 1 in the list myList. Thank you.

Edit01:

@pyfunc: Thank you for the explanation; now I understand.

I need to have a list of lists; so 'from form' should be a list. I did this (please correct if this not the right way):

>>> myList
[1, 'from form', [1, 2, 't']]
>>> s = myList[1]
>>> s
'from form'
>>> s = [myList[1]]
>>> s
['from form']
>>> myList[1] = s
>>> myList
[1, ['from form'], [1, 2, 't']]
>>> 
1
17
10/23/2010 8:16:42 PM

Accepted Answer

myList[1] is an element of myList and it's type is string.

myList[1] is str, you can not append to it. myList is a list, you should have been appending to it.

>>> myList = [1, 'from form', [1,2]]
>>> myList[1]
'from form'
>>> myList[2]
[1, 2]
>>> myList[2].append('t')
>>> myList
[1, 'from form', [1, 2, 't']]
>>> myList[1].append('t')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'append'
>>> 
18
10/23/2010 8:00:49 PM

If you want to append a value to myList, use myList.append(s).

Strings are immutable -- you can't append to them.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon