Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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 67,989 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