Если вы измените определение course
на
course = (DEPT_CODE + COURSE_NUMBER).setResultsName("Course")
вы получаете следующее поведение:
x=statement.parseString("CS 2110")
print(repr(x))
# (['CS', 2110], {'Course': [((['CS', 2110], {'Dept Code': [('CS', 0)], 'Course Number': [(2110, 1)]}), 0)], 'Dept Code': [('CS', 0)], 'Course Number': [(2110, 1)]})
print(x['Dept Code'])
# CS
print(x['Course Number'])
# 2110
print(x['Course'])
# ['CS', 2110]
Это не совсем то, что вы хотели, но достаточно ли этого?
Примечание, из документов :
[setResultsName] возвращает копию из
исходный объект ParserElement;
это так, что клиент может определить
базовый элемент, такой как целое число,
и ссылаться на него в нескольких местах
с разными именами.
Так что course.setResultsName("Course")
не работает, потому что не влияет на course
. Вместо этого вам нужно будет сказать course=course.setResultsName("Course")
. Это альтернативный способ сделать то, что я делал выше.