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.

sidni ahmed
3,329 PointsPlayers, 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?
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
Treehouse Moderator 67,989 PointsFor 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