Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Regular Expressions in Python Introduction to Regular Expressions Word Length

[Solved] This test "....find_words() that takes a count and a string...." works in my console but fails online

Here is the piece of code that I am using for the test

def find_words(count, str):
    new_list = []
    for item in str:
        if re.search(r'\w'*count, item):
            new_list.append(item)

    return new_list

This gives correct result for below strings

print(find_words(4, ['cat','doll','baby','ballon','me','123']))
print(find_words(6, ['doll','me','InM','123456', 'Treehouse', 'student', 'Kenneth', 'Python', 'g0tcha']))

However, this script does not pass the test. It seems to return empty list.

Can anyone help?

word_length.py
import re

# EXAMPLE:
# >>> find_words(4, "dog, cat, baby, balloon, me")
# ['baby', 'balloon']
def find_words(count, str):
    new_list = []
    for item in str:
        if re.search(r'\w'*count, item):
            new_list.append(item)

    return new_list

2 Answers

Russell Sawyer
seal-mask
.a{fill-rule:evenodd;}techdegree
Russell Sawyer
Front End Web Development Techdegree Student 15,705 Points

I have noticed when assigning variables that are dedicated variables like str can cause some issues with passing these challenges.

Also, when you are searching through a string re.findall works best when looking for all the words in a string.

Lastly, re.findall requires 2 items: what you are looking for, followed by a coma, and what you are looking in. In this case your words are in the string variable.

This is the code that worked for me.

def find_words(count, string):
    return re.findall(r'\w+' * count, string)

Thanks Russell Sawyer . This worked :)