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 Players Dictionary and Class

sidni ahmed
sidni ahmed
3,329 Points

Players, dictionary and class code challenge

i have completed the code challenge only by looking at other peoples answers. This one seems pretty tricky.

one thing i do not get is this:

?P<last_name>[-\w\s\w]+),\s

why is it we have a hyphen in the set and two '\w' in the pattern, why not one? also why does the ',\s' need to be outside the brackets

also i just do not get the how this init function works here. i think I might be just over complicating it for myself. why are we using init here any way?

players.py
import re

string = '''Love, Kenneth: 20
Chalkley, Andrew: 25
McFarland, Dave: 10
Kesten, Joy: 22
Stewart Pinchback, Pinckney Benton: 18'''

players = re.search(r'''
          ^(?P<last_name>[-\w\s\w]+),\s
          (?P<first_name>[-\w\s*\w]+):\s
          (?P<score>[\d]+)?$
''', string, re.X | re.M)

1 Answer

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 68,423 Points

For the first question: the hyphen and the * and the redundant \w are not needed. As you mentioned, a set (or character class) is defined, repeating members of the set has no effect., Since there are no * are hyphens in the data, they aren't needed in the sets:

players = re.search(r'''
          ^(?P<last_name>[\w\s]+),\s
          (?P<first_name>[\w\s]+):\s
          (?P<score>[\d]+)?$
''', string, re.X | re.M)

The second part of the challenge is a bit disconnected from the regex lesson. Task 2 is looking for a function that has an __init__ method that takes three arguments and sets the attributes of the instance to these values;

class Player():
    def __init__(self, last_name, first_name, score):
        self.last_name = last_name
        self.first_name = first_name
        self.score = score