List has no attribute: strip? (try a for loop)

>>> love_maybe_lines.strip()
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
AttributeError: 'list' object has no attribute 'strip'

We need to parse out the individual lines which as strings DO have a strip() method.


Agreed. When looking on stackoverflow everyone was recommending to use .replace() instead. Since that was not the objective of this exercise there was no useful information on how to properly .strip() a string. Their “example” was not an example, just a console output of what the string would look like of implemented correctly. Thinking there was a bug with the exercise or something small I was not missing I clicked “solution” to find that it was a “for” loop with the rest of the lesson completed. Since I am new to coding I find this to be irritating because my logic doesn’t exactly turn to breaking outside the box if in at least it is not suggested or “hinted”. If there was just a “hint”: “maybe think about a for loop…” or whatever, this would be better instruction rather than put up some bogus information and expecting new programmers to improvise off it.

Sorry about the rant. Just frustrated.


‘list’ object has no attribute ‘strip’

  • Sorry, I can"t seem to grasp what the sentence above really means. What does it mean exactly?

strip is an attribute (method) of class str objects. It’s purpose is to remove leading and trailing characters. If no character(s) are given as an argument, the default is whitespace.

We cannot strip a list.


i think the confusing part is that most of the time the instructions guide you as what you have to do and in this one to use for is not evident, maybe if at any part of the instructions they have used the words iterate, or for each one, etc, implying you have to for each element on a list, and not just strip…


2 posts were split to a new topic: Love maybe lines: solve this exercise using list comprehensions?

I’m considering switching over to another learning site, it just doesn’t worth my money and time to get exercises where I have to use things I just haven’t learned yet.
how do you expect people to resolve this if at this point they haven’t seen anything about loops, list or the use of .append?
it’s just ridiculous!


hello my friend. actually we have been through lists AND loops. just look at the python 3 syllabus. number 4 is lists and number 5 is loops. i don’t have a strong memory but im pretty sure that append should be in the Lists section.

Happy coding!!


i really know how you feel …
but i think it’s a good way to learn coding by this way … you just need to think every time before solving your problem … so here, codecademy told u that .strip() is working with strings not lists , so you need to iterate every element in the list (not the whole list) with for loop or any other loops , because every element is a string and .strip() is working with strings .


14 posts were split to a new topic: Value for love_maybe_lines_stripped did not match the expected value

2 posts were split to a new topic: But not strip a list?

5 posts were split to a new topic: Love maybe lines: ‘list’ object has no attribute ‘strip’

5 posts were split to a new topic: Love maybe lines: does not raise an error; it just doesn’t work…

5 posts were split to a new topic: Some of the exercises are not written well

I see everyone’s issue with this exercise. But i think this is a good way to learn. They expect you to resolve the issue in your own way as long as you hit the over all goal that they ask for. And they have given you all the skills before hand to resolve the issue.

Usually my code is a complete mess after trying to get the answer. Then i look at how i could have made my code more simple, less line, better techniques, and it highlights what more i need to learn. if we got spoon fed everything. We would not learn one of the main aspects i feel this course is trying to teach us, which is how to fix a problem being presented to us under certain parameters using what we know already . After all in the real world we will not be given hints.

I would also recommend getting python 3 on your computer so you can try out your code on there i feeling that helps with my learning process anyway as it allows me to keep perfecting my code in my own time after getting the right answer. And if you don’t have python 3 on your computer at this point anyway then you have not followed the course properly and moved on to quickly.

After all we are not just learning to code we are learning a way of thinking. which unfortunately can be a painful process at times :sweat_smile:


On the other hand, I found the exercise helpful to problem solve. I also got the list error I was trying to strip the list directly. I think the exercises were designed to also help us learn how to debug errors and think of ways to complete the objective.

I appreciated this exercise, too, because we need to apply the concepts from previous topics to arrive at the solution. So to me, it was just a matter of asking: “what have I learned so far that I can use to solve this problem?” And that’s how I ended up with the loops.


If we can’t use String Methods on Lists, then how are we allowed to perform this code:

love_maybe_full = “\n”.join(love_maybe_lines_stripped)

Isn’t .join() a String Method, and isn’t love_maybe_lines_stripped a List? I’m confused.

Thank you in advance for any responses.

You are correct about the type of love_maybe_lines and that .join is a string method but that is an example of a string method where a list is passed as the argument (whether or not that is OK depends on the method). In a loose definition a method is function which belongs to an object. You can only use methods which belong to a given object, for example-

"".strip()   # string method
"".join(x)  # string method where we pass x as the argument
[].sort()  # list method
[].append(x)  # list method where we pass x as the argument

If you swapped these round, e.g. [].strip() then you would get errors as .strip is not a list method which I think was the original point for this thread.

Exactly what arguments you can pass depends on the method itself.

If you’re posting code snippets to the fourm please see How do I format code in my posts? as it’s much easier for everyone else to read :slightly_smiling_face: (especially when indentation comes into play).

1 Like

@tgrtim explained it well. Check out the docs for more information. The argument passed to the str.join() method can be any iterable that’s elements are strings. This would include strings!

blah = "Hello World!" print(blah) blahblah = "@".join(blah) print(blahblah)

Just an advice: don’t get frustrated. I guess with this example you learned that you have to use all the tools you’ve learned so far. It might be frustrating, but remember this is a process you will adapt eventually.